rahil-c commented on code in PR #18942:
URL: https://github.com/apache/hudi/pull/18942#discussion_r3814654248


##########
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/BaseHoodieTableServiceClient.java:
##########
@@ -633,7 +633,7 @@ private void completeClustering(HoodieReplaceCommitMetadata 
replaceCommitMetadat
     if (clusteringTimer != null) {
       long durationInMs = metrics.getDurationInMs(clusteringTimer.stop());
       
TimelineUtils.parseDateFromInstantTimeSafely(clusteringCommitTime).ifPresent(parsedInstant
 ->
-          metrics.updateCommitMetrics(parsedInstant.getTime(), durationInMs, 
replaceCommitMetadata, HoodieActiveTimeline.CLUSTERING_ACTION)
+          metrics.updateCommitMetrics(parsedInstant.getTime(), durationInMs, 
replaceCommitMetadata, clusteringInstant.getAction())

Review Comment:
   Done, reverted to `CLUSTERING_ACTION`.
   
   Your read of the convention is the one I ended up on: metrics in this class 
are named after the table service, not the completed timeline action. 
Compaction reports under `compaction.*` though it completes as `commit`, and 
log compaction under `logcompaction.*` though it completes as `deltacommit`, so 
`clustering.*` is what matches its neighbours. `replacecommit.*` would also 
share gauges with insert_overwrite, delete_partition and bucket_rescale under 
last-write-wins registration in `Metrics.registerGauge`.
   
   That makes master already correct here, so rather than pick a constant I 
have repointed this PR at the pending-instant bug you flagged in the review 
body. Details in the top-level comment.



##########
hudi-client/hudi-flink-client/src/main/java/org/apache/hudi/client/HoodieFlinkTableServiceClient.java:
##########
@@ -155,7 +155,7 @@ protected void completeClustering(
       long durationInMs = metrics.getDurationInMs(clusteringTimer.stop());
       try {
         
metrics.updateCommitMetrics(TimelineUtils.parseDateFromInstantTime(clusteringCommitTime).getTime(),
-            durationInMs, metadata, HoodieActiveTimeline.CLUSTERING_ACTION);
+            durationInMs, metadata, clusteringInstant.getAction());

Review Comment:
   Done, reverted alongside the base client, so the whole family stays under 
`clustering.*`. `HoodieMetrics:166` (`clustering.timer`), `:456` 
(`clustering.fileCreationTime`) and `FlinkClusteringMetrics` were already on 
that namespace and are untouched, so the Flink double-reporting you described 
does not arise.



##########
hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/TestHoodieMetrics.java:
##########
@@ -638,6 +638,41 @@ public void testGetMetricsNameWithoutPrefix() {
   // Existing rollback-failure and conflict-resolution-by-category tests
   // -----------------------------------------------------------------------
 
+  @Test
+  public void testClusteringCommitMetricsUsesVersionAwareAction() {

Review Comment:
   Done, deleted.
   
   The replacement goes through `updateTableServiceInstantMetrics` rather than 
calling `updateCommitMetrics` with a literal. Verified it fails on master with 
`expected: <1> but was: <0>`, and also fails against the naive version of the 
fix (matching `replacecommit` by action name) with `expected: <1> but was: 
<2>`, since the fixture puts an earlier pending insert_overwrite next to the 
pending clustering instant.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to