diff --git a/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamer.java b/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamer.java
index ccd5c49e186b3..8c2254916393d 100644
--- a/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamer.java
+++ b/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamer.java
@@ -237,6 +237,9 @@ public static class Config implements Serializable {
@Parameter(names = {"--enable-hive-sync"}, description = "Enable syncing to hive")
public Boolean enableHiveSync = false;
+ @Parameter(names = {"--hoodie-sync-client-tool-class"}, description = "Meta sync client tool, using comma to separate multi tools")
+ public String syncClientToolClass = "";
+
@Parameter(names = {"--max-pending-compactions"},
description = "Maximum number of outstanding inflight/requested compactions. Delta Sync will not happen unless"
+ "outstanding compactions is less than this number")
diff --git a/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamerMetrics.java b/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamerMetrics.java
index a054b277a8d8f..76252f2dfda27 100644
--- a/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamerMetrics.java
+++ b/hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamerMetrics.java
@@ -30,8 +30,10 @@ public class HoodieDeltaStreamerMetrics {
public String overallTimerName = null;
public String hiveSyncTimerName = null;
+ public String metaSyncTimerName = null;
private Timer overallTimer = null;
public Timer hiveSyncTimer = null;
+ public Timer metaSyncTimer = null;
public HoodieDeltaStreamerMetrics(HoodieWriteConfig config) {
this.config = config;
@@ -40,6 +42,7 @@ public HoodieDeltaStreamerMetrics(HoodieWriteConfig config) {
Metrics.init(config);
this.overallTimerName = getMetricsName("timer", "deltastreamer");
this.hiveSyncTimerName = getMetricsName("timer", "deltastreamerHiveSync");
+ this.metaSyncTimerName = getMetricsName("timer", "deltastreamerMetaSync");
}
}
@@ -57,6 +60,13 @@ public Timer.Context getHiveSyncTimerContext() {
return hiveSyncTimer == null ? null : hiveSyncTimer.time();
}
+ public Timer.Context getMetaSyncTimerContext() {
+ if (config.isMetricsOn() && metaSyncTimer == null) {
+ metaSyncTimer = createTimer(metaSyncTimerName);
+ }
+ return metaSyncTimer == null ? null : metaSyncTimer.time();
+ }
+
private Timer createTimer(String name) {
return config.isMetricsOn() ? Metrics.getInstance().getRegistry().timer(name) : null;
}
@@ -65,10 +75,15 @@ String getMetricsName(String action, String metric) {
return config == null ? null : String.format("%s.%s.%s", tableName, action, metric);
}
- public void updateDeltaStreamerMetrics(long durationInNs, long hiveSyncNs) {
+ public void updateDeltaStreamerMetrics(long durationInNs, long syncNs, boolean hiveSync) {
if (config.isMetricsOn()) {
Metrics.registerGauge(getMetricsName("deltastreamer", "duration"), getDurationInMs(durationInNs));
- Metrics.registerGauge(getMetricsName("deltastreamer", "hiveSyncDuration"), getDurationInMs(hiveSyncNs));
+ if (hiveSync) {
+ Metrics.registerGauge(getMetricsName("deltastreamer", "hiveSyncDuration"), getDurationInMs(syncNs));
+ } else {
+ Metrics.registerGauge(getMetricsName("deltastreamer", "metaSyncDuration"), getDurationInMs(syncNs));
+ }
+
}
}
diff --git a/pom.xml b/pom.xml
index 05907f34845ab..46d93023ba309 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,10 +39,10 @@