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]

Reply via email to