Skip to content

HBASE-28065 Corrupt HFile data is mishandled in several cases (branch-2.5) - #5384

Merged
ndimiduk merged 1 commit into
apache:branch-2.5from
ndimiduk:28065-hfile-corrupt-reads-branch-2.5
Sep 21, 2023
Merged

HBASE-28065 Corrupt HFile data is mishandled in several cases (branch-2.5)#5384
ndimiduk merged 1 commit into
apache:branch-2.5from
ndimiduk:28065-hfile-corrupt-reads-branch-2.5

Conversation

@ndimiduk

@ndimidukndimiduk commented Sep 6, 2023

Copy link
Copy Markdown
Member
  • when no block size is provided and there's not a preread headerBuf, treat the value with caution.
  • verify HBase checksums before making use of the block header.
  • inline verifyOnDiskSizeMatchesHeader to keep throw/return logic in the method body.
  • whenever a read is determined to be corrupt and fallback to HDFS checksum is necessary, also invalidate the cached value of headerBuf.
  • built out a test suite covering various forms of block header corruption, for blocks in first and second positions.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from 4e60a26 to 0457e83CompareSeptember 8, 2023 15:27
@ndimiduk

Copy link
Copy Markdown
MemberAuthor

Added a new unit test that relies on a LocalFileSystem to mess with the hfile under the covers.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
HFile.Reader reader = null;
HFileBlock.BlockIterator iter = null;
try {
reader = HFile.createReader(hfs, hfsPath, CacheConfig.DISABLED, true, conf);

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like there's a couple ways to read through an HFile -- this is roughly how the HFilePrettyPrinter does it. Is this how we want to do it in this test?

}

/**
* Enables writing and rewriting portions of the file backing an {@link HFileBlock}.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation assumes a LocalFileSystem. I haven't yet looked at how to corrupt a header underneath a data node.

}

@Test
public void testBlockMagicCorruptionFirstBlock() throws Exception {

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First and second block access patterns are slightly different because the caller has slightly more block location data due to the next-header over-read. Thus they have different failure modes ; thus they're tested in two different test methods.

}

@Test
public void testUncompressedSizeWithoutHeaderCorruption() throws Exception {

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I stubbed out test methods for all the Header fields, but, if we're careful, we don't need to test all of them because only a couple fields are read before the header checksum has been validated. Once the dust settles, I'll comment the test class with notes about which headers are tested and why, dropping the rest.

byte[] family = Bytes.toBytes("f");
try (HFile.Writer writer = factory.create()) {
for (int i = 0; i < 40; i++) {
byte[] row = RandomKeyValueUtil.randomOrderedFixedLengthKey(rand, i, 100);

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All this could be encapsulated in a RandomCellGenerator kind of class.

@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from 0457e83 to e68f2daCompareSeptember 11, 2023 12:49
@ndimiduk

Copy link
Copy Markdown
MemberAuthor

Looks like HEAD was broken by #5379.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@charlesconnellcharlesconnell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To the extent that I understand the issues here, this seems good to me.

@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from 202af84 to d0b6988CompareSeptember 12, 2023 11:49
@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@bbeaudreaultbbeaudreault left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great! I have a few small comments/questions just to dot all of our i's

Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
Comment threadhbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java Outdated
@Apache-HBase

This comment was marked as outdated.

@ndimiduk
ndimiduk marked this pull request as ready for review September 12, 2023 15:02
@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/6/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt

Checkstyle warning is,

./hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java:1675: protected HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,:5: Method length is 154 lines (max allowed is 150). [MethodLength]

It's counting the entire body of the method, which is comprised more of line comments than code, in that tally.

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

The test failed due to an IllegalArgumentException that had no message? I wish for an ExceptionMatcher class that prints the exception's stacktrace in the failure description.

java.lang.AssertionError: Expected: a string starting with "newLimit > capacity"
but: was null
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption.testOnDiskSizeWithoutHeaderCorruptionFirstBlock(TestHFileBlockHeaderCorruption.java:127)

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

This one is identical, I just missed converting the asserts to use matchers -- a null for the IllegalArgumentException exception message.

Stacktrace
java.lang.NullPointerException
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption.testOnDiskSizeWithoutHeaderCorruptionSecondBlock(TestHFileBlockHeaderCorruption.java:198)

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

Hmm the test run on #5398 failed identically.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from 9254e9d to 2985bfaCompareSeptember 19, 2023 08:09
@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 36sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
_ branch-2.5 Compile Tests _
+1 💚mvninstall2m 31sbranch-2.5 passed
+1 💚compile2m 24sbranch-2.5 passed
+1 💚checkstyle0m 34sbranch-2.5 passed
+1 💚spotless0m 40sbranch has no errors when running spotless:check.
+1 💚spotbugs1m 24sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 29sthe patch passed
+1 💚compile2m 19sthe patch passed
+1 💚javac2m 19sthe patch passed
-0 ⚠️checkstyle0m 34shbase-server: The patch generated 1 new + 3 unchanged - 0 fixed = 4 total (was 3)
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck12m 36sPatch does not cause any errors with Hadoop 2.10.2 or 3.2.4 3.3.6.
+1 💚spotless0m 40spatch has no errors when running spotless:check.
+1 💚spotbugs1m 32sthe patch passed
_ Other Tests _
+1 💚asflicense0m 10sThe patch does not generate ASF License warnings.
29m 57s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#5384
Optional Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
unameLinux 4d7a1bfeb58c 5.4.0-152-generic #169-Ubuntu SMP Tue Jun 6 22:23:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
checkstylehttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt
Max. process+thread count78 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 54sDocker mode activated.
-0 ⚠️yetus0m 6sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall3m 7sbranch-2.5 passed
+1 💚compile0m 48sbranch-2.5 passed
+1 💚shadedjars5m 23sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 24sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 33sthe patch passed
+1 💚compile0m 54sthe patch passed
+1 💚javac0m 54sthe patch passed
+1 💚shadedjars5m 42spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 24sthe patch passed
_ Other Tests _
-1 ❌unit15m 10shbase-server in the patch failed.
37m 0s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 4031afdd3a86 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaTemurin-1.8.0_352-b08
unithttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/artifact/yetus-jdk8-hadoop2-check/output/patch-unit-hbase-server.txt
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/testReport/
Max. process+thread count1720 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 41sDocker mode activated.
-0 ⚠️yetus0m 5sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall3m 14sbranch-2.5 passed
+1 💚compile0m 46sbranch-2.5 passed
+1 💚shadedjars5m 11sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 23sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 40sthe patch passed
+1 💚compile0m 44sthe patch passed
+1 💚javac0m 44sthe patch passed
+1 💚shadedjars5m 11spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 23sthe patch passed
_ Other Tests _
+1 💚unit219m 41shbase-server in the patch passed.
243m 0s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 672ce046cc09 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/testReport/
Max. process+thread count4643 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/10/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

I think that the test failure is from a difference in JDK implementation -- Jenkins is running Eclipse Adoptium-11.0.17+8 while I'm testing on Eclipse Adoptium-11.0.18+10. Both versions throw an IllegalArgumentException, but the portions of the stack traces within the jvm code differ a bit, and indeed the one on Jenkins does not include a message in the exception. I'm downloading the older version of the JDK to see if I can reproduce the failure. Meanwhile, I didn't realize this detail of the exception came up from the JDK ; let me make the test less specific to the runtime.

@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from 2985bfa to cb061b0CompareSeptember 19, 2023 13:34
@ndimiduk

Copy link
Copy Markdown
MemberAuthor

For reference, the two stack traces look like,

java.lang.IllegalArgumentException
at java.nio.Buffer.limit(Buffer.java:275)
at org.apache.hadoop.hbase.nio.SingleByteBuff.limit(SingleByteBuff.java:111)
at org.apache.hadoop.hbase.nio.SingleByteBuff.limit(SingleByteBuff.java:37)
at org.apache.hadoop.hbase.io.hfile.ChecksumUtil.validateChecksum(ChecksumUtil.java:184)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.validateChecksum(HFileBlock.java:1867)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockDataInternal(HFileBlock.java:1769)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockData(HFileBlock.java:1519)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl$1.nextBlock(HFileBlock.java:1410)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption$HFileBlockChannelPositionIterator.hasNext(TestHFileBlockHeaderCorruption.java:349)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption$CountingConsumer.readFully(TestHFileBlockHeaderCorruption.java:307)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption.testOnDiskSizeWithoutHeaderCorruptionFirstBlock(TestHFileBlockHeaderCorruption.java:132)

vs.

java.lang.IllegalArgumentException: newLimit > capacity: (4378 > 66)
at java.base/java.nio.Buffer.createLimitException(Buffer.java:395)
at java.base/java.nio.Buffer.limit(Buffer.java:369)
at java.base/java.nio.ByteBuffer.limit(ByteBuffer.java:1529)
at java.base/java.nio.ByteBuffer.limit(ByteBuffer.java:267)
at org.apache.hadoop.hbase.nio.SingleByteBuff.limit(SingleByteBuff.java:111)
at org.apache.hadoop.hbase.nio.SingleByteBuff.limit(SingleByteBuff.java:37)
at org.apache.hadoop.hbase.io.hfile.ChecksumUtil.validateChecksum(ChecksumUtil.java:184)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.validateChecksum(HFileBlock.java:1867)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockDataInternal(HFileBlock.java:1769)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockData(HFileBlock.java:1519)
at org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl$1.nextBlock(HFileBlock.java:1410)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption$HFileBlockChannelPositionIterator.hasNext(TestHFileBlockHeaderCorruption.java:350)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption$CountingConsumer.readFully(TestHFileBlockHeaderCorruption.java:308)
at org.apache.hadoop.hbase.io.hfile.TestHFileBlockHeaderCorruption.testOnDiskSizeWithoutHeaderCorruptionFirstBlock(TestHFileBlockHeaderCorruption.java:132)

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

Wait, the failing stack trace doesn't include module information in the JDK path entires. Was that faliing test run on JDK8?

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 38sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 1sThe patch does not contain any @author tags.
_ branch-2.5 Compile Tests _
+1 💚mvninstall2m 31sbranch-2.5 passed
+1 💚compile2m 22sbranch-2.5 passed
+1 💚checkstyle0m 37sbranch-2.5 passed
+1 💚spotless0m 43sbranch has no errors when running spotless:check.
+1 💚spotbugs1m 23sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 28sthe patch passed
+1 💚compile2m 18sthe patch passed
+1 💚javac2m 18sthe patch passed
-0 ⚠️checkstyle0m 33shbase-server: The patch generated 1 new + 3 unchanged - 0 fixed = 4 total (was 3)
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck12m 39sPatch does not cause any errors with Hadoop 2.10.2 or 3.2.4 3.3.6.
+1 💚spotless0m 42spatch has no errors when running spotless:check.
+1 💚spotbugs1m 34sthe patch passed
_ Other Tests _
+1 💚asflicense0m 10sThe patch does not generate ASF License warnings.
30m 21s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#5384
Optional Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
unameLinux 3cb07efe704b 5.4.0-152-generic #169-Ubuntu SMP Tue Jun 6 22:23:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
checkstylehttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt
Max. process+thread count79 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 51sDocker mode activated.
-0 ⚠️yetus0m 6sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall3m 24sbranch-2.5 passed
+1 💚compile0m 54sbranch-2.5 passed
+1 💚shadedjars5m 57sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 28sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall3m 19sthe patch passed
+1 💚compile0m 54sthe patch passed
+1 💚javac0m 54sthe patch passed
+1 💚shadedjars6m 2spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 30sthe patch passed
_ Other Tests _
+1 💚unit227m 37shbase-server in the patch passed.
254m 4s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 5ed9e42910ea 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/testReport/
Max. process+thread count4935 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 44sDocker mode activated.
-0 ⚠️yetus0m 5sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall3m 6sbranch-2.5 passed
+1 💚compile0m 46sbranch-2.5 passed
+1 💚shadedjars5m 23sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 24sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 33sthe patch passed
+1 💚compile0m 54sthe patch passed
+1 💚javac0m 54sthe patch passed
+1 💚shadedjars5m 35spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 26sthe patch passed
_ Other Tests _
-1 ❌unit272m 48shbase-server in the patch failed.
297m 11s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux c7a5699b1624 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaTemurin-1.8.0_352-b08
unithttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/artifact/yetus-jdk8-hadoop2-check/output/patch-unit-hbase-server.txt
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/testReport/
Max. process+thread count4871 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/11/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@bbeaudreaultbbeaudreault left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good find on the jvm test issue. LGTM

Also of note, we've deployed this on about 90% of our fleet

@ndimiduk

Copy link
Copy Markdown
MemberAuthor

Failures on java8 look unrelated. The new tests were run and passed on both JVM environments.

* when no block size is provided and there's not a preread headerBuf, treat the value with
caution.
* verify HBase checksums before making use of the block header.
* inline verifyOnDiskSizeMatchesHeader to keep throw/return logic in the method body.
* separate validation of onDiskSizeWithHeader as input parameter from as read from block header
* simplify branching around fetching and populating onDiskSizeWithHeader.
* inline retrieving nextOnDiskBlockSize ; add basic validation.
* whenever a read is determined to be corrupt and fallback to HDFS checksum is necessary, also
invalidate the cached value of headerBuf.
* build out a test suite covering various forms of block header corruption, for blocks in first
and second positions.
Signed-off-by: Bryan Beaudreault <bbeaudreault@apache.org>
@ndimiduk
ndimidukforce-pushed the 28065-hfile-corrupt-reads-branch-2.5 branch from cb061b0 to aace0a4CompareSeptember 20, 2023 09:24
@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 38sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
_ branch-2.5 Compile Tests _
+1 💚mvninstall2m 28sbranch-2.5 passed
+1 💚compile2m 20sbranch-2.5 passed
+1 💚checkstyle0m 32sbranch-2.5 passed
+1 💚spotless0m 40sbranch has no errors when running spotless:check.
+1 💚spotbugs1m 23sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 27sthe patch passed
+1 💚compile2m 18sthe patch passed
+1 💚javac2m 18sthe patch passed
-0 ⚠️checkstyle0m 35shbase-server: The patch generated 1 new + 3 unchanged - 0 fixed = 4 total (was 3)
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck12m 46sPatch does not cause any errors with Hadoop 2.10.2 or 3.2.4 3.3.6.
+1 💚spotless0m 40spatch has no errors when running spotless:check.
+1 💚spotbugs1m 35sthe patch passed
_ Other Tests _
+1 💚asflicense0m 10sThe patch does not generate ASF License warnings.
30m 24s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#5384
Optional Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
unameLinux dcfb612fe1d4 5.4.0-152-generic #169-Ubuntu SMP Tue Jun 6 22:23:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
checkstylehttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt
Max. process+thread count77 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 38sDocker mode activated.
-0 ⚠️yetus0m 6sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall2m 20sbranch-2.5 passed
+1 💚compile0m 39sbranch-2.5 passed
+1 💚shadedjars4m 13sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 25sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall2m 7sthe patch passed
+1 💚compile0m 39sthe patch passed
+1 💚javac0m 39sthe patch passed
+1 💚shadedjars4m 16spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 23sthe patch passed
_ Other Tests _
+1 💚unit201m 6shbase-server in the patch passed.
221m 24s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 7a4001b19dd4 5.4.0-152-generic #169-Ubuntu SMP Tue Jun 6 22:23:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaTemurin-1.8.0_352-b08
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/testReport/
Max. process+thread count4299 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 49sDocker mode activated.
-0 ⚠️yetus0m 6sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.5 Compile Tests _
+1 💚mvninstall3m 32sbranch-2.5 passed
+1 💚compile1m 1sbranch-2.5 passed
+1 💚shadedjars6m 15sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 30sbranch-2.5 passed
_ Patch Compile Tests _
+1 💚mvninstall3m 24sthe patch passed
+1 💚compile0m 58sthe patch passed
+1 💚javac0m 58sthe patch passed
+1 💚shadedjars6m 16spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 27sthe patch passed
_ Other Tests _
+1 💚unit217m 48shbase-server in the patch passed.
245m 26s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR#5384
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 3043e1151a06 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionbranch-2.5 / 482548f
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/testReport/
Max. process+thread count4474 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5384/12/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@ndimiduk
ndimiduk merged commit df2328a into apache:branch-2.5Sep 21, 2023
@ndimiduk
ndimiduk deleted the 28065-hfile-corrupt-reads-branch-2.5 branch September 21, 2023 10:08
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ndimiduk@Apache-HBase@bbeaudreault@charlesconnell