Open
Conversation
Checklist before you submit for review
|
b28cdb4 to
802cb1f
Compare
|
802cb1f to
d71c7f9
Compare
❌ Build ds-cassandra-pr-gate/PR-2152 rejected by Butler2 regressions found Found 2 new test failures
Found 3 known test failures |
02217e8 to
c415ff4
Compare
This commit attempts to improve quality of RebufferingInputStream and its implementations by the following changes: - `reBuffer` contract has been documented - `reBuffer` implementations no longer throw to indicate EOF - `reBuffer` implementations fill at least 1 byte when not on EOF - `reBuffer` implementations do not leave null buffer after exiting normally - state Preconditions have been added to `reBuffer` - `readFully` has been rewritten to rely on the Java contract of `read` which is allowed to read less than `len` bytes, instead of assuming non-standard behaviour present in the old `read` implementation - `read` has been significantly simplified, yet it still obeys the Java InputStream contract - some code has been made final / moved to private to disallow accidental breakage of contracts in subclasses Those are not just code-style changes. In particular the following contract violating behaviors should be impossible now: - `read` throwing EOFException - `readFully` throwing EOFException before reaching the real end of stream Additionally, a comprehensive test suite has been added for `RebufferingInputStream`, which tests its logic in isolation from its concrete implementations.
c415ff4 to
0636b1a
Compare
scottfines
reviewed
Jan 13, 2026
scottfines
left a comment
There was a problem hiding this comment.
I'm too new to be comfortable approving PRs just yet, but FWIW this looks good to me.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


This commit attempts to improve quality of RebufferingInputStream
and its implementations by the following changes:
reBuffercontract has been documentedreBufferimplementations no longer throw to indicate EOFreBufferimplementations fill at least 1 byte when not on EOFreBufferimplementations do not leave null buffer after exitingnormally
reBufferreadFullyhas been rewritten to rely on the Java contract ofreadwhich is allowed to read less than
lenbytes, instead of assumingnon-standard behaviour present in the old
readimplementationreadhas been significantly simplified, yet it still obeysthe Java InputStream contract
accidental breakage of contracts in subclasses
Those are not just code-style changes. In particular the following
contract violating behaviors should be impossible now:
readthrowing EOFExceptionreadFullythrowing EOFException before reaching the realend of stream