-
Notifications
You must be signed in to change notification settings - Fork 89
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] log compaction #1282
Draft
WhitneyDeng
wants to merge
56
commits into
linkedin:main
Choose a base branch
from
WhitneyDeng:log-compaction
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains 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
…er methods VeniceParentHelixAdmin::isCompactionReady VeniceParentHelixAdmin::isLastCompactionTimeOlderThanThresholdHours
…or readability & maintainability
…ForCompaction & VeniceParentHelixAdmin::isLastCompactionTimeOlderThanThresholdHours JavaDocs description - complete description of VeniceParentHelixAdmin::getStoresForCompaction - future tense to present tense for VeniceParentHelixAdmin::isLastCompactionTimeOlderThanThresholdHours
…ionReady & helper methods
…ersion is not found
…:filterStoresForCompaction - extract filterStoresForCompaction() logic for testing - write VeniceParentHelixAdminTest::testFilterStoresForCompaction
… TestVeniceParentHelixAdmin - migrate from integration test files to unit test files
mynameborat
reviewed
Nov 6, 2024
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.
Good job on putting up the first PR quickly. Looks very good. I have put in some comments.
Let me know if you have questions.
internal/venice-common/src/main/java/com/linkedin/venice/controllerapi/ControllerClient.java
Outdated
Show resolved
Hide resolved
...mmon/src/integrationTest/java/com/linkedin/venice/controller/VeniceParentHelixAdminTest.java
Outdated
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/Admin.java
Outdated
Show resolved
Hide resolved
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
.../venice-controller/src/main/java/com/linkedin/venice/controller/server/AdminSparkServer.java
Outdated
Show resolved
Hide resolved
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
...nice-controller/src/test/java/com/linkedin/venice/controller/TestVeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
…tionReady package private
…data type ArrayList -> List
- remodularise VeniceParentHelixAdmin::isHybridStore to function var in VeniceParentHelixAdmin::isCompactionReady - make VeniceParentHelixAdmin::isLastCompactionTimeOlderThanThresholdHours hardcoded int to class constant
majisourav99
reviewed
Nov 7, 2024
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
- change exception message in child controller
interface for repush: Azkaban/Airflow implementation for Linkedin internal. (potentially) Spark implementation for OSS.
…logic to VeniceHelixAdmin
- empty implementation for now
reason: since repush will be used for diff use cases (other than compaction), the term repush should be reserved for the abstracted repush action.
- instantiate in VeniceController
- this config determines the number of threads for LogCompactionService::executor
…UNT annotations & comments
…into CompactionManager - create CompactionManager & TestCompactionManager - move TestCompactionManager::testFilterStoresForCompaction from TestVeniceParentHelixAdmin
…utor setup in LogCompactionService::startInner
…g time unit from hour to millisecond
- create com.linkedin.venice.controller.logcompaction in tests - change CompactionManager::filterStoresForCompaction from public to package private
…g-compaction-repush`
closed because branch renamed to |
reverted branch name to |
…epush` to `log-compaction`
…abled feature flat purpose: control rollout of log compaction service
- log trigger source (for now, can expand later)
…QueryParams initialisation to take explicit clusterName directly
- since triggerRepush() is beyond the original scope of log compaction, this method is parked for later addition. adding TODO to remember thought process & design decision to use byte[] + data model class rather than QueryParams for repush job details
- CompactionManager::compactStore & VeniceHelixAdmin::compactStore logs & rethrows exception from repush - LogCompactionService logs exception & can be extended to perform other actions to handle exception - RepushJobResponse will be passe from RepushOrchestrator::repush through CompactionManager::compactStore & VeniceHelixAdmin::compactStore to LogCompactionService - added execution URL to RepushJobResponse, to follow repush.py's pattern
after studying information in Airflow response objects
to keep LogCompactionTask running & not bring down VeniceController
…ompactionManager if log compaction is enabled
- created TestRepushOrchestratorImpl, a dummy RepushOrchestrator implementation for testing
lusong64
reviewed
Dec 16, 2024
...controller/src/main/java/com/linkedin/venice/controller/logcompaction/CompactionManager.java
Outdated
Show resolved
Hide resolved
…cont'd: update CompactionManager init
- add integration test in TestHybrid::testHybridStoreLogCompaction - add Admin::getCompactionManager for testing - change scope of CompactionManager::isCompactionReady
…gCompaction - setup incomplete. decided to do test in TestHybrid::testHybridStoreLogCompaction instead
… to TestLogCompactionService
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.
Summary
How was this PR tested?
unit test: filter all stores on a cluster for compaction-ready stores
Does this PR introduce any user-facing changes?