Repository navigation
Conversation
When a stream partition reaches end of life, such as a fully consumed Kinesis shard after a split or merge, no new consuming segment is created. Alerts on llcPartitionConsuming then keep firing for a partition that is done. The lead controller of the table now emits a per partition partitionEndOfLife gauge: 1 when it stops a partition for end of life (at commit or in the validation task), and 0 once such a partition gets a consuming segment again. Other partitions emit nothing. The gauges are removed when the partition has no segments left or the controller stops leading the table. Commit and validation updates for a table run inside compute() on a per table map, and validation skips partitions a commit updated after it read the segment metadata. Existing metrics are unchanged.
KKcorps
force-pushed
the
kk/partition-end-of-life-compatible
branch
from
October 23, 2026 06:48
43fa379 to
03cf181
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #20008 +/- ##
============================================
+ Coverage 69.68% 69.70% +0.01%
Complexity 1491 1491
============================================
Files 3548 3548
Lines 235054 235115 +61
Branches 37702 37713 +11
============================================
+ Hits 163804 163889 +85
+ Misses 58586 58556 -30
- Partials 12664 12670 +6
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
When a stream partition ends, like a Kinesis shard that is fully read after a split or merge, Pinot never creates another consuming segment for it. Alerts on
llcPartitionConsumingthen keep firing for a partition that is done. This is the backward compatible alternative to #19730: it only adds a metric and leaves every existing one as it is.The lead controller of the table now emits a
partitionEndOfLifegauge for each partition. It is 1 when a partition stops for end of life, at commit or inRealtimeSegmentValidationManager, and 0 once such a partition gets a consuming segment again. Other partitions emit nothing, and the gauge is removed when the partition has no segments left or leadership moves. Commit and validation updates for a table are serialized, and validation never overwrites a mark that a commit made after it read the segments.To stop the false alert, add
unless on(table, partition) (partitionEndOfLife == 1)to the rule. Unlike #19730, the server still leavesllcPartitionConsumingat 0 for an ended partition, so a rule that is not updated keeps firing.Tests: new cases in
PinotLLCRealtimeSegmentManagerTestfor the commit mark, validation, retention, a partition coming back, a commit racing a validation run, and leadership loss. Each fails without its fix. The Prometheus export test, spotless, checkstyle and license pass.