[ 
https://issues.apache.org/jira/browse/HBASE-23962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ctest updated HBASE-23962:
--------------------------
    Description: 
*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.

  was:
*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: 
SecureProtobufLogWriterjava.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.


> Improving the documentation for hbase.regionserver.hlog.{reader, writer}.impl
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-23962
>                 URL: https://issues.apache.org/jira/browse/HBASE-23962
>             Project: HBase
>          Issue Type: Improvement
>          Components: conf
>            Reporter: Ctest
>            Priority: Major
>
> *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