-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Pauseless Consumption #14460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Pauseless Consumption #14460
Changes from all commits
Commits
Show all changes
31 commits
Select commit
Hold shift + click to select a range
333a942
Adding major changes on the server and controller side to allow exist…
4686e30
Adding pauseless flag for commit end path:
9aman 271dda5
Resolving Checkstyle issues
9aman 2a36c3d
Adding pauseless to the stream config
9aman 76c091c
fixing a test case
9aman 79c4558
Adding checks to ensure the stream config is not null
9aman 6fe9d3a
Adding support for legacy table configs
9aman 16b9664
Revert "Group commit IdealState updates (#13976)"
9aman 4dca71e
synchronising calls for ideal state updates
9aman e1dfc1c
Setting a fixed time for the download to happen
9aman 0a5375e
Fixing minor bug in timeout
9aman bcf250b
The changes prevent the server from trying indefinitely in case there…
9aman 7eb74ff
Fixing state machine issues that we encountered for lease extension d…
9aman d4fc408
Changes to allow extending RealtimeSegmentValidationManager and PinotLLC
9aman 1f67e75
Introduce an API to upload and update the metadata for a failed segment
9aman ab75843
Reverting changes to helix helper in order to use IdealState group co…
9aman 9084f17
Adding changes for group commit in base controller starter
9aman 3160b3b
Minor linting issues
9aman 949c948
reverting changes in PinotHelixResourceManager.java to allow group co…
9aman 5fa1b4f
Removing changes that conflict with the group commit changes
9aman 56e9e3f
Minor additional reversals related to PinotHelixResourceManager
9aman b53ee5e
reverting synchronization changes in PinotLLCRealtimeSegmentManager
9aman c53c669
fixing minor issues in the code
9aman 6c13f04
Improving the download logic a bit
9aman 599ca33
WIP: Fixing minor issues in the code
9aman 1804c91
Fixing issues in the PinotHelixResourcemanager
9aman 28f9d0f
Improving upload segment API to return segment ZK metadata instead of…
9aman a147b3b
Adding flags in table config to inject failures
9aman 809e4f0
Adding support for pauselessConsumptionEnabled in TableConfigBuilder
9aman e5ba623
Reverting unncessary changes to the branch
9aman 9dfcc4e
Reverting failure scenarios
9aman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -485,8 +485,7 @@ private void setUpPinotController() { | |
|
|
||
| // Helix resource manager must be started in order to create PinotLLCRealtimeSegmentManager | ||
| LOGGER.info("Starting realtime segment manager"); | ||
| _pinotLLCRealtimeSegmentManager = | ||
| new PinotLLCRealtimeSegmentManager(_helixResourceManager, _config, _controllerMetrics); | ||
| _pinotLLCRealtimeSegmentManager = createPinotLLCRealtimeSegmentManager(); | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These changes in the ControllerStarter have been added to easily override two crucial classes: |
||
| // TODO: Need to put this inside HelixResourceManager when HelixControllerLeadershipManager is removed. | ||
| _helixResourceManager.registerPinotLLCRealtimeSegmentManager(_pinotLLCRealtimeSegmentManager); | ||
| _segmentCompletionManager = | ||
|
|
@@ -616,6 +615,10 @@ protected void configure() { | |
| _serviceStatusCallbackList.add(generateServiceStatusCallback(_helixParticipantManager)); | ||
| } | ||
|
|
||
| protected PinotLLCRealtimeSegmentManager createPinotLLCRealtimeSegmentManager() { | ||
| return new PinotLLCRealtimeSegmentManager(_helixResourceManager, _config, _controllerMetrics); | ||
| } | ||
|
|
||
| /** | ||
| * This method is used to fix table/schema names. | ||
| * TODO: in the next release, maybe 2.0.0, we can remove this method. Meanwhile we can delete the orphan schemas | ||
|
|
@@ -861,9 +864,7 @@ protected List<PeriodicTask> setupControllerPeriodicTasks() { | |
| new OfflineSegmentIntervalChecker(_config, _helixResourceManager, _leadControllerManager, | ||
| new ValidationMetrics(_metricsRegistry), _controllerMetrics); | ||
| periodicTasks.add(_offlineSegmentIntervalChecker); | ||
| _realtimeSegmentValidationManager = | ||
| new RealtimeSegmentValidationManager(_config, _helixResourceManager, _leadControllerManager, | ||
| _pinotLLCRealtimeSegmentManager, _validationMetrics, _controllerMetrics, _storageQuotaChecker); | ||
| _realtimeSegmentValidationManager = createRealtimeSegmentValidationManager(); | ||
| periodicTasks.add(_realtimeSegmentValidationManager); | ||
| _brokerResourceValidationManager = | ||
| new BrokerResourceValidationManager(_config, _helixResourceManager, _leadControllerManager, _controllerMetrics); | ||
|
|
@@ -892,6 +893,11 @@ protected List<PeriodicTask> setupControllerPeriodicTasks() { | |
| return periodicTasks; | ||
| } | ||
|
|
||
| protected RealtimeSegmentValidationManager createRealtimeSegmentValidationManager() { | ||
| return new RealtimeSegmentValidationManager(_config, _helixResourceManager, _leadControllerManager, | ||
| _pinotLLCRealtimeSegmentManager, _validationMetrics, _controllerMetrics, _storageQuotaChecker); | ||
| } | ||
|
|
||
| @Override | ||
| public void stop() { | ||
| switch (_controllerMode) { | ||
|
|
||
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of changing the existing protocol, please add a new controller endpoint that is called from the server when it needs the idealstate modified before segment upload.
This will avoid a lot of
if pauselessEnabledstatements in the code path