[ 
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)

Reply via email to