-
Notifications
You must be signed in to change notification settings - Fork 113
[controller] integrate OpenTelemetry into Controller & add log compaction metrics #1665
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] integrate OpenTelemetry into Controller & add log compaction metrics #1665
Conversation
m-nagarajan
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. Left some very initial review.
.../venice-controller/src/main/java/com/linkedin/venice/controller/repush/RepushJobRequest.java
Outdated
Show resolved
Hide resolved
...-common/src/main/java/com/linkedin/venice/stats/dimensions/LogCompactionSelectionReason.java
Outdated
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceController.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
...troller/src/main/java/com/linkedin/venice/controller/logcompaction/LogCompactionService.java
Outdated
Show resolved
Hide resolved
...s/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceParentHelixAdmin.java
Outdated
Show resolved
Hide resolved
6797aeb to
2062312
Compare
...al/venice-client-common/src/main/java/com/linkedin/venice/stats/dimensions/JobRunStatus.java
Outdated
Show resolved
Hide resolved
...ce-controller/src/main/java/com/linkedin/venice/controller/stats/ControllerMetricEntity.java
Outdated
Show resolved
Hide resolved
...venice-controller/src/main/java/com/linkedin/venice/controller/stats/LogCompactionStats.java
Show resolved
Hide resolved
contains wip code
…eniceControllerContext
- add RepushStoreTriggerSource enum for metric dimension - import `venice-client-common` in `venice-controller` to allow `VeniceParentHelixAdmin` to access `VeniceResponseStatusCategory` to emit metric - add clusterName to RepushJobRequest for metric dimension - in RepushJobRequest, streamline triggerSource to `RepushStoreTriggerSource`
- VeniceParentHelixAdmin::getStoresForCompaction call VeniceHelixAdmin::getStoresForCompaction directly rather than throw exception - VeniceController only creates LogCompactionService if is parent controller
…::initializeParentAdmin to pass in metricsRepository for testing metric emission in VeniceParentHelixAdmin
...ent-common/src/main/java/com/linkedin/venice/stats/VeniceOpenTelemetryMetricsRepository.java
Outdated
Show resolved
Hide resolved
...lient-common/src/main/java/com/linkedin/venice/stats/dimensions/VeniceMetricsDimensions.java
Outdated
Show resolved
Hide resolved
internal/venice-client-common/src/main/java/com/linkedin/venice/stats/metrics/MetricType.java
Outdated
Show resolved
Hide resolved
.../src/integrationTest/java/com/linkedin/venice/integration/utils/VeniceControllerWrapper.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceController.java
Outdated
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
Show resolved
Hide resolved
...ce-controller/src/main/java/com/linkedin/venice/controller/stats/ControllerMetricEntity.java
Outdated
Show resolved
Hide resolved
...ce-controller/src/main/java/com/linkedin/venice/controller/stats/ControllerMetricEntity.java
Outdated
Show resolved
Hide resolved
...ce-controller/src/main/java/com/linkedin/venice/controller/stats/ControllerMetricEntity.java
Outdated
Show resolved
Hide resolved
...venice-controller/src/main/java/com/linkedin/venice/controller/stats/LogCompactionStats.java
Outdated
Show resolved
Hide resolved
…licating getMetricPrefix(metricEntity), metricEntity.getMetricName() for all metric types
… `storeNominationToCompactionCompleteDurationMetric` emission from repush trigger logic
… `storeNominationToCompactionCompleteDurationMetric` metric description
…MPACTION_ELIGIBLE_STATE`
…MPACTION_ELIGIBLE_STATE`
m-nagarajan
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.
Left a few comments. Thanks for reiterating. Can you also add a detailed PR description with the changes involved for stats including the metrics being added and also any other non-stats related log compaction related changes in the PR.
internal/venice-client-common/src/main/java/com/linkedin/venice/stats/metrics/MetricType.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Outdated
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Show resolved
Hide resolved
services/venice-controller/src/main/java/com/linkedin/venice/controller/VeniceHelixAdmin.java
Outdated
Show resolved
Hide resolved
...venice-controller/src/main/java/com/linkedin/venice/controller/stats/LogCompactionStats.java
Outdated
Show resolved
Hide resolved
…ePushStatusInfo)
- nixed STORE_COMPACTION_TRIGGER_STATUS - move recordRepushStoreCall emission from VeniceParentHelixAdmin to common path in VeniceHelixAdmin - problem is to mock all relevant components in VeniceHelixAdmin for testing in LogCompactionStatsTest
Problem Statement
Solution
OpenTelemetry integration into controller
venice-controller/build.gradleVeniceControllerWrappermetricsRepository initialised withVeniceMetricsRepositoryLog Compaction logic change
VeniceParentHelixAdmin::getStoresForCompaction()callsVeniceHelixAdmin::getStoresForCompaction()rather than throw exceptionMetric Type added:
Metrics added in
LogCompactionStats:REPUSH_CALL_COUNTCOMPACTION_ELIGIBLE_STATESTORE_NOMINATED_FOR_COMPACTION_COUNTMetric Dimension Added
REPUSH_TRIGGER_SOURCEforREPUSH_CALL_COUNTOther OTel changes
VeniceOpenTelemetryMetricsRepository::getFullMetricNametakeMetricEntityinstead ofStringprefix name and metric nameCode changes
Concurrency-Specific Checks
Both reviewer and PR author to verify
synchronized,RWLock) are used where needed.ConcurrentHashMap,CopyOnWriteArrayList).How was this PR tested?
LogCompactionStatsTestto testLogCompactionStatsmetric emissionVeniceOpenTelemetryMetricsRepositoryTest:getFullMetricName& Gauge changesVeniceMetricsDimensionsTest: addREPUSH_TRIGGER_SOURCEDoes this PR introduce any user-facing or breaking changes?