[ https://issues.apache.org/jira/browse/HBASE-23962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ctest updated HBASE-23962: -------------------------- Summary: Wrong combination of hlog reader and writer could crash regionserver (was: Improving the documentation for `hbase.regionserver.hlog.{reader, writer}.impl`) > Wrong combination of hlog reader and writer could crash regionserver > -------------------------------------------------------------------- > > Key: HBASE-23962 > URL: https://issues.apache.org/jira/browse/HBASE-23962 > Project: HBase > Issue Type: Improvement > Components: conf > Reporter: Ctest > Priority: Major > Attachments: HBASE-23962-001.patch > > > *Problem* > I found out that there two configuration parameters: > `hbase.regionserver.hlog.reader.impl` and > `hbase.regionserver.hlog.writer.impl` which should be used as a pair. > There are two options for the reader: `ProtobufLogReader` and > `SecureProtobufLogReader`. > And four options for the writer: `ProtobufLogWriter`, > `SecureProtobufLogWriter`, `AsyncProtobufLogWriter` and > `SecureAsyncProtobufLogWriter`. > Using the wrong combination of the reader and the writer will throw an > exception. For example, if setting the writer to SecureProtobufLogWriter and > setting the reader to ProtobufLogReader(default value), an exception will be > thrown: > {code:java} > java.io.IOException: Got unknown writer class: SecureProtobufLogWriter > at > org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initInternal(ProtobufLogReader.java:224) > at > org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initReader(ProtobufLogReader.java:173) > at > org.apache.hadoop.hbase.regionserver.wal.ReaderBase.init(ReaderBase.java:65) > at > org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.init(ProtobufLogReader.java:168) > at > org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:321) > at > org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:303) > at > org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:291) > at > org.apache.hadoop.hbase.wal.LogRecoveredEditsOutputSink.deleteOneWithFewerEntries(LogRecoveredEditsOutputSink.java:109) > at > org.apache.hadoop.hbase.wal.LogRecoveredEditsOutputSink.closeWriter(LogRecoveredEditsOutputSink.java:240) > at > org.apache.hadoop.hbase.wal.LogRecoveredEditsOutputSink$2.call(LogRecoveredEditsOutputSink.java:196) > at > org.apache.hadoop.hbase.wal.LogRecoveredEditsOutputSink$2.call(LogRecoveredEditsOutputSink.java:192) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748){code} > The current description of these two parameters (in the `hbase-default.xml`) > doesn’t tell the users anything about which combination is right or not. > > *Improvement* > We can add some more information in the description of these two parameters > in `hbase-default.xml` to tell the users about the correct combinations. > I upload a patch for improving the description. -- This message was sent by Atlassian Jira (v8.3.4#803005)