fix: Skip Cassandra rows whose TTL exceeds the 20-year maximum#367
Open
Manisha4 wants to merge 1 commit into
Open
fix: Skip Cassandra rows whose TTL exceeds the 20-year maximum#367Manisha4 wants to merge 1 commit into
Manisha4 wants to merge 1 commit into
Conversation
A SortedFeatureView row with a far-future event_timestamp produces a per-row TTL above Cassandra's 20-year cap (630,720,000s). Because the TTL is inlined into the CQL statement, session.prepare() rejects it ("ttl is too large" / "Unable to make int from ..."). That exception is raised during batch construction, bypasses the async on_failure handler, and aborts the entire micro-batch — stalling a stream indefinitely on a single bad record (the checkpoint can never advance past the poison row).
Add a CASSANDRA_MAX_TTL guard mirroring the existing 'ttl < 0' skip: oversized-TTL rows are now skipped and logged at WARNING instead of crashing the batch, so good rows in the same batch keep flowing. The non-sorted insert path uses a static key_ttl_seconds and cannot overflow from row data, so it needs no guard.
Co-Authored-By: Claude Opus 4.8 (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.
What this PR does / why we need it:
A SortedFeatureView row with a far-future event_timestamp produces a per-row TTL above Cassandra's 20-year cap (630,720,000s). Because the TTL is inlined into the CQL statement, session.prepare() rejects it ("ttl is too large" / "Unable to make int from ..."). That exception is raised during batch construction, bypasses the async on_failure handler, and aborts the entire micro-batch — stalling a stream indefinitely on a single bad record (the checkpoint can never advance past the poison row).
Add a CASSANDRA_MAX_TTL guard mirroring the existing 'ttl < 0' skip: oversized-TTL rows are now skipped and logged at WARNING instead of crashing the batch, so good rows in the same batch keep flowing. The non-sorted insert path uses a static key_ttl_seconds and cannot overflow from row data, so it needs no guard.
Which issue(s) this PR fixes:
Misc