anshuksi282-ksolves opened a new pull request, #8601: URL: https://github.com/apache/hadoop/pull/8601
### Description of PR This PR fixes HADOOP-18896. The buffer size in `FSOutputSummer` is computed as `sum.getBytesPerChecksum() * BUFFER_NUM_CHUNKS`. When `file.bytes-per-checksum` is configured to a very large value (e.g. 238609295), this multiplication overflows a signed 32-bit int and wraps around to a negative number, causing a `NegativeArraySizeException` when allocating the internal buffer array. This PR adds a `Preconditions.checkArgument` check in the `FSOutputSummer` constructor to validate that the computed buffer size is positive, failing fast with a clear `IllegalArgumentException` instead of an obscure `NegativeArraySizeException`. This continues the work started in #6064 by @teamconfx, which went stale. This PR additionally adds a unit test as requested in that PR's review (`test4tests` check had failed on the original PR). ### How was this patch tested? - Added a new test class `TestFSOutputSummer` in `hadoop-common` with `testLargeBytesPerChecksumOverflow`, using a minimal concrete subclass of `FSOutputSummer` to verify the constructor fails with `IllegalArgumentException` (rather than `NegativeArraySizeException`) when `bytesPerChecksum * BUFFER_NUM_CHUNKS` overflows. - Verified the test fails with the original `NegativeArraySizeException` when the fix is reverted, and passes with the fix applied. - `mvn -pl hadoop-common-project/hadoop-common test -Dtest=TestFSOutputSummer` passes. Note: the JIRA's original reproduction steps reference an HDFS test (`TestDecommissionWithStriped`), but since the buffer overflow bug lives entirely in `hadoop-common`'s `FSOutputSummer` class, this PR adds a focused unit test in `hadoop-common` instead, avoiding an unnecessary cross-module HDFS test dependency. ### AI Tooling Contains content generated by Claude (Anthropic). Used to help investigate the root cause, draft the fix, and write/verify the accompanying unit test. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
