You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2019/01/07 19:33:00 UTC

[jira] [Commented] (HBASE-15752) ClassNotFoundException is encountered when custom WAL codec is not found in WALPlayer job

    [ https://issues.apache.org/jira/browse/HBASE-15752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16736227#comment-16736227 ] 

Hudson commented on HBASE-15752:
--------------------------------

SUCCESS: Integrated in Jenkins build HBase-1.2-IT #1195 (See [https://builds.apache.org/job/HBase-1.2-IT/1195/])
HBASE-15752 ClassNotFoundException is encountered when custom WAL codec (busbey: rev c153f6fdd4d5db77347158a3a4b28d2ca7d2437b)
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/WALPlayer.java
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.java


> ClassNotFoundException is encountered when custom WAL codec is not found in WALPlayer job
> -----------------------------------------------------------------------------------------
>
>                 Key: HBASE-15752
>                 URL: https://issues.apache.org/jira/browse/HBASE-15752
>             Project: HBase
>          Issue Type: Bug
>          Components: tooling, wal
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>            Priority: Critical
>             Fix For: 1.3.0, 0.98.20, 2.0.0, 1.2.10
>
>         Attachments: 15752.v1.patch, 15752.v2.patch
>
>
> [~cartershanklin] reported the following when he tried out back / restore feature in a Phoenix enabled deployment:
> {code}
> 2016-05-02 18:57:58,578 FATAL [IPC Server handler 2 on 38194] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1462215011294_0001_m_000000_0 - exited : java.io. IOException: Cannot get log reader
>   at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:344)
>   at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:266)
>   at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:254)
>   at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:403)
>   at org.apache.hadoop.hbase.mapreduce.WALInputFormat$WALRecordReader.initialize(WALInputFormat.java:152)
>   at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:548)
>   at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:786)
>   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
>   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:422)
>   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1708)
>   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
> Caused by: java.lang.UnsupportedOperationException: Unable to find org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
>   at org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:36)
>   at org.apache.hadoop.hbase.regionserver.wal.WALCellCodec.create(WALCellCodec.java:103)
>   at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.getCodec(ProtobufLogReader.java:282)
>   at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initAfterCompression(ProtobufLogReader.java:292)
>   at org.apache.hadoop.hbase.regionserver.wal.ReaderBase.init(ReaderBase.java:82)
>   at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.init(ProtobufLogReader.java:149)
>   at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:301)
>   ... 12 more
> Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
>   at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
>   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>   at java.lang.Class.forName0(Native Method)
>   at java.lang.Class.forName(Class.java:264)
> {code}
> This was due to the IndexedWALEditCodec (specified thru hbase.regionserver.wal.codec) used by Phoenix being absent in hadoop classpath.
> WALPlayer should handle this situation better by adding the jar for IndexedWALEditCodec class to mapreduce job dependency.
> Although this was found during testing of backup / restore, the error may occur in other places where WALPlayer needs custom WAL codec for the replay.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)