echonesis opened a new pull request, #11958: URL: https://github.com/apache/ozone/pull/11958
## What changes were proposed in this pull request? EC reconstruction reads use asynchronous cell reads to fill stripe buffers. When the reader thread is interrupted while waiting for a cell read, the current wait loop restores its interrupt status before waiting for the remaining reads. Those waits can immediately throw InterruptedException again, allowing the reconstruction read to return before all cell reads finish. A subsequent `close()` or `unbuffer()` can then return the stripe buffers to the pool while outstanding cell reads are still writing into them. This pull request: - Waits for all cell reads to finish before propagating interruption, so buffers can be safely reused or returned to the pool. - Runs unstarted cell reads in the caller, including tasks dropped or rejected after executor shutdown. - Preserves the caller's interrupt status while temporarily clearing a pre-existing interrupt during cell read execution, including through `CallerRunsPolicy`. - Adds regression tests for interrupted reads, buffer reuse after `close()` and `unbuffer()`, positioned-read cleanup, and executor shutdown, rejection, and saturation. ## What is the link to the Apache JIRA https://issues.apache.org/jira/browse/HDDS-17003 ## How was this patch tested? Local Tests ``` mvn -pl :hdds-client test \ -Dtest=TestECBlockInputStream,TestECBlockInputStreamProxy,TestECBlockReconstructedInputStream,TestECBlockReconstructedStripeInputStream \ -Dsurefire.failIfNoSpecifiedTests=true \ -DskipShade -DskipRecon ``` GitHub Actions CI: https://github.com/echonesis/ozone/actions/runs/41998472128 Generated-by: Codex (GPT-6) -- 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]
