CASSANDRA-21072: Prevent TombstoneOverwhelmingException from being swallowed when tracking warnings#4607
Open
arnav-chakraborty wants to merge 2 commits intoapache:trunkfrom
Conversation
…allowed when tracking warnings When trackWarnings is enabled, ReadCommandVerbHandler catches all RejectException subclasses and sends an empty success response with failure info in MessageParams. TombstoneOverwhelmingException is a hard abort that should propagate as a proper failure, not masquerade as success. Re-throw it regardless of warning tracking state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR ensures TombstoneOverwhelmingException is not swallowed when TRACK_WARNINGS is enabled in ReadCommandVerbHandler, so the exception propagates as a proper failure instead of being turned into an “empty success” response with side-channel MessageParams.
Changes:
- Update
ReadCommandVerbHandler.doVerb()to rethrowTombstoneOverwhelmingExceptioneven when warning tracking is enabled. - Add unit tests verifying
TombstoneOverwhelmingExceptionpropagates both with and withoutTRACK_WARNINGS.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
src/java/org/apache/cassandra/db/ReadCommandVerbHandler.java |
Prevents TombstoneOverwhelmingException from being swallowed in the warning-tracking RejectException handling path. |
test/unit/org/apache/cassandra/db/ReadCommandVerbHandlerTest.java |
Adds regression tests ensuring tombstone aborts propagate regardless of warning tracking. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Verifies that non-tombstone RejectExceptions (e.g., LocalReadSizeTooLargeException) are correctly swallowed and sent as empty success responses with MessageParams when TRACK_WARNINGS is enabled. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
PR Description:
Prevent TombstoneOverwhelmingException from being swallowed when tracking warnings
Summary
In
ReadCommandVerbHandler.doVerb(), whentrackWarnings=true, allRejectExceptionsubclasses are caught and swallowed — an empty success response is sent with failure info inMessageParams. While the coordinator eventuallyrecognizes the failure via the side-channel params,
TombstoneOverwhelmingExceptionis a hard abort that should propagate as a proper failure response, not masquerade as a success.The fix adds
|| e instanceof TombstoneOverwhelmingExceptionto the catch block so it is always re-thrown. OtherRejectExceptionsubclasses (LocalReadSizeTooLargeException,QueryReferencingTooManyIndexesException) continueusing the
MessageParamspath since they're designed forWarningContextaggregation.Related datastax commit pr --> datastax@f1223ec
patch by Arnav Chakraborty; for CASSANDRA-21072
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com