-
Notifications
You must be signed in to change notification settings - Fork 113
[controller] change LogCompactionService scope from controller to cluster level + check creation time of ongoing push store version
#1636
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
[controller] change LogCompactionService scope from controller to cluster level + check creation time of ongoing push store version
#1636
Conversation
a201c52 to
0f192e5
Compare
… to per cluster on its leader parent controller
0f192e5 to
1f51114
Compare
… than VeniceControllerMultiClusterConfig
…ore rather than a random cluster
…ycle for LogCompactionService::compactStoresInClusters
|
The bug fix looks good. Can we get the bug fix separated out so that we can quickly merge that change? Here are some concerns around the current throttling handling
I'd suggest introducing the throttling limit on the
Based on the above, it might be worth to split the PR and merge the bug fixes to expedite. |
huangminchn
left a comment
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.
Thanks Whitney!
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceController.java
Show resolved
Hide resolved
...troller/src/main/java/com/linkedin/venice/controller/VeniceControllerMultiClusterConfig.java
Outdated
Show resolved
Hide resolved
...nice-controller/src/main/java/com/linkedin/venice/controller/VeniceControllerStateModel.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Show resolved
Hide resolved
...troller/src/main/java/com/linkedin/venice/controller/logcompaction/LogCompactionService.java
Outdated
Show resolved
Hide resolved
...troller/src/main/java/com/linkedin/venice/controller/logcompaction/LogCompactionService.java
Outdated
Show resolved
Hide resolved
…h limit from config" This reverts commit b12bf56.
LogCompactionService instance creation to state transition to leader parent controller
…pactionCycle for LogCompactionService::compactStoresInClusters" This reverts commit 2294f5c.
… creation time of largest version rather than current version reason: a version larger than the current version being present is indication of an ongoing push. If a push has been triggered in the last 24 hours, this store is not stale and thus not eligible for compaction.
… to check the largest version rather than the current version largest version might not be current version if it is an ongoing push, which is regarded as the most recent compaction
LogCompactionService instance creation to state transition to leader parent controllerLogCompactionService scope from controller to cluster level + check creation time of ongoing push store version
…nce of starting services
…tionService::compactStoresInClusters since LogCompactionService will only be created if isLogCompactionSchedulingEnabled = true in HelixVeniceClusterResources
...controller/src/main/java/com/linkedin/venice/controller/logcompaction/CompactionManager.java
Outdated
Show resolved
Hide resolved
...controller/src/main/java/com/linkedin/venice/controller/logcompaction/CompactionManager.java
Show resolved
Hide resolved
huangminchn
left a comment
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.
Thanks for the hard work Whitney!
Problem Statement
Fixing bugs found when end-to-end testing adhoc repush controller endpoint.
Bugs found:
log.compaction.scheduling.enabledconfig from cluster-level rather than "commonConfig" (aka the first cluster entry in themultiClusterPropertiesmap). Reading the config at for the corresponding cluster ensures scheduled compaction is isolated to clusters where this feature is enabled.getControllerConfig(clusterName).isLogCompactionSchedulingEnabled()when iterating through clusters inLogCompactionService::LogCompactionTask::compactStoresInClusters()Solution
LogCompactionServiceinstance creation fromVeniceControllerto when a parent controller transitions from standby to leader (1f51114)functionality addition:
Code changes
Concurrency-Specific Checks
Both reviewer and PR author to verify
synchronized,RWLock) are used where needed.ConcurrentHashMap,CopyOnWriteArrayList).How was this PR tested?
TestLogCompactionService::testThrottlingRepushQuotaPerCompactionCycle2294f5cDoes this PR introduce any user-facing or breaking changes?