Hello,

I met a strange issue. However, I don't understand why it occurred.
That is "On-disk size without header provided is 65347, but block header
contains -620432417. Block offset: 117193180315, data starts with:".

Call stack:
  at
org.apache.hadoop.hbase.io.hfile.HFileBlock.validateOnDiskSizeWithoutHeader(HFileBlock.java:521)
  at
org.apache.hadoop.hbase.io.hfile.HFileBlock.access$700(HFileBlock.java:88)
  at
org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockDataInternal(HFileBlock.java:1671)
  at
org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockData(HFileBlock.java:1538)
  at
org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:452)

The HBase version is 1.2.6
I know 1.2.6 reached EOL.
(However, it is too hard migration to the new cluster. That the reason why
I operate this cluster.)

It looks like a block is wrong. When it occurred, Every read request that
related to the error block didn't complete.
I don't know how to resolve this. The only way to resolve this issue is
major compaction.
After major compaction (means a block that looks wrong becomes an invalid
block), a Read request works fine.

I found an issue https://issues.apache.org/jira/browse/HBASE-20761.
I am not sure it is related.
But HBASE-20761 mentioned "This will cause further attempts to read the
block to fail since we will still retry the corrupt replica instead of
reporting the corrupt replica and trying a different one.", this looks like
a key to solve this issue.

Our cluster configuration
  - hbase.regionserver.checksum.verify=true
  - dfs.client.read.shortcircuit.skip.checksum=false

Does anyone have a similar situation?

Thanks.

Reply via email to