Skip to content

Conversation

@xiangfu0
Copy link
Contributor

@xiangfu0 xiangfu0 commented Sep 14, 2025

Controller: re-ingest COMMITTING LLC segments when pauseless is disabled.

  • Add PinotLLCRealtimeSegmentManager#reingestCommittingSegmentsForPauselessDisabled() and wire from RealtimeSegmentValidationManager when pauseless=false

  • Target only COMMITTING LLC segments with start/end offsets and no download URL that are ONLINE in IS

  • Respect partial upsert/dedup safety via allowRepairOfErrorSegments

  • Add unit tests in RealtimeSegmentValidationManagerTest

  • Build: checkstyle clean, targeted unit test passing.

@codecov-commenter
Copy link

codecov-commenter commented Sep 14, 2025

Codecov Report

❌ Patch coverage is 7.40741% with 25 lines in your changes missing coverage. Please review.
✅ Project coverage is 63.47%. Comparing base (549a47c) to head (cec9993).

Files with missing lines Patch % Lines
.../core/realtime/PinotLLCRealtimeSegmentManager.java 3.84% 25 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master   #16811      +/-   ##
============================================
- Coverage     63.47%   63.47%   -0.01%     
  Complexity     1424     1424              
============================================
  Files          3086     3086              
  Lines        182340   182355      +15     
  Branches      27979    27981       +2     
============================================
- Hits         115746   115743       -3     
- Misses        57662    57687      +25     
+ Partials       8932     8925       -7     
Flag Coverage Δ
custom-integration1 100.00% <ø> (ø)
integration 100.00% <ø> (ø)
integration1 100.00% <ø> (ø)
integration2 0.00% <ø> (ø)
java-11 63.43% <7.40%> (+0.01%) ⬆️
java-21 63.43% <7.40%> (-0.02%) ⬇️
temurin 63.47% <7.40%> (-0.01%) ⬇️
unittests 63.46% <7.40%> (-0.01%) ⬇️
unittests1 56.31% <ø> (+<0.01%) ⬆️
unittests2 33.62% <7.40%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch 2 times, most recently from f9ddae8 to 50cd487 Compare September 15, 2025 03:59
Copy link
Contributor

@noob-se7en noob-se7en left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch from 50cd487 to 241ead5 Compare September 15, 2025 16:02
@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch from 241ead5 to d3f1043 Compare September 16, 2025 19:01
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR extends segment re-ingestion capabilities to work for all realtime tables, not just those with pauseless consumption enabled. The change allows the controller to re-ingest COMMITTING LLC segments when pauseless consumption is disabled, while maintaining safety for partial upsert and deduplication scenarios.

Key Changes

  • Modified RealtimeSegmentValidationManager to always call repair method regardless of pauseless status
  • Updated logging and error handling in PinotLLCRealtimeSegmentManager for better clarity
  • Added comprehensive unit tests to verify the behavior for both pauseless enabled and disabled scenarios

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
RealtimeSegmentValidationManager.java Removes pauseless consumption check and always calls repair method
PinotLLCRealtimeSegmentManager.java Improves logging messages and error handling flow
RealtimeSegmentValidationManagerTest.java Adds unit tests for both pauseless enabled/disabled scenarios and reformats existing test data

@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch 2 times, most recently from 9479c6c to 4421d16 Compare September 20, 2025 15:55
@xiangfu0 xiangfu0 requested a review from Copilot September 20, 2025 16:51
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

if (aliveServer == null) {
LOGGER.warn("No alive server found to re-ingest segment: {} in table: {}, skipping re-ingestion", segmentName,
realtimeTableName);
LOGGER.warn("No alive server found to re-ingest segment: {} in table: {}", segmentName, realtimeTableName);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: was there some reason to remove ", skipping re-ingestion"? seems to be easier to understand the log if this is included, right?

@noob-se7en
Copy link
Contributor

I have fixed some bugs in method: repairSegmentsInErrorStateForPauselessConsumption and added tests
#16904

Will request to wait before merging this PR.

@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch 2 times, most recently from f255a74 to 2f22da2 Compare October 10, 2025 11:07
@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch 2 times, most recently from d8afa42 to 2a1987b Compare October 21, 2025 19:35
…ant reingest method

- Reuse repairSegmentsInErrorStateForPauselessConsumption() to repair errored
  segments for both pauseless and non-pauseless tables
- Remove reingestCommittingSegmentsForPauselessDisabled() and route call sites
  to the shared repair flow
- Keep a single reingestion entrypoint: reingestSegment(table, segment, instances)
  with simple predicates (hasOnlineInstance, maybeResetIfNotInProgress)
- Update RealtimeSegmentValidationManager to always invoke the shared repair flow
  (and preserve optional auto-reset behavior)
- Adjust RealtimeSegmentValidationManagerTest expectations accordingly

Behavioral notes:
- Only re-ingests COMMITTING LLC segments with start/end offsets and no download
  URL when all replicas are in ERROR and the segment is ONLINE in IdealState
- Otherwise resets segments not in IN_PROGRESS to fetch from deep store/peer
- Applies only to tables without dedup or partial upsert unless explicitly allowed
  via allowRepairOfErrorSegments()
@xiangfu0 xiangfu0 force-pushed the re-ingest-when-segments-in-commintting-mode branch from 2a1987b to cec9993 Compare October 24, 2025 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants