xuzq created HDFS-16533:
---------------------------

             Summary: COMPOSITE_CRC failed between replicated file and striped 
file.
                 Key: HDFS-16533
                 URL: https://issues.apache.org/jira/browse/HDFS-16533
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: hdfs, hdfs-client
            Reporter: xuzq
            Assignee: xuzq


After testing the COMPOSITE_CRC with some random length between replicated file 
and striped file which has same data with replicated file, it failed. 

Reproduce step like this:
{code:java}
@Test(timeout = 90000)
public void testStripedAndReplicatedFileChecksum2() throws Exception {
  int abnormalSize = (dataBlocks * 2 - 2) * blockSize +
      (int) (blockSize * 0.5);
  prepareTestFiles(abnormalSize, new String[] {stripedFile1, replicatedFile});

  int loopNumber = 100;
  while (loopNumber-- > 0) {
    int verifyLength = ThreadLocalRandom.current()
        .nextInt(10, abnormalSize);
    FileChecksum stripedFileChecksum1 = getFileChecksum(stripedFile1,
        verifyLength, false);
    FileChecksum replicatedFileChecksum = getFileChecksum(replicatedFile,
        verifyLength, false);

    if (checksumCombineMode.equals(ChecksumCombineMode.COMPOSITE_CRC.name())) {
      Assert.assertEquals(stripedFileChecksum1, replicatedFileChecksum);
    } else {
      Assert.assertNotEquals(stripedFileChecksum1, replicatedFileChecksum);
    }
  }
} {code}
And after tracing the root cause, `FileChecksumHelper#makeCompositeCrcResult` 
maybe compute an error `consumedLastBlockLength` when updating checksum for the 
last block of the fixed length which maybe not the last block in the file.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to