From cf837b49008fd351a3f89beb5e4e5c17c30b9a3c Mon Sep 17 00:00:00 2001 From: Sagar Sumit Date: Wed, 25 May 2022 19:38:56 +0530 Subject: [PATCH] [HUDI-3193] Decouple hudi-aws from hudi-client-common (#5666) Move HoodieMetricsCloudWatchConfig to hudi-client-common --- .../aws/cloudwatch/CloudWatchReporter.java | 2 +- hudi-client/hudi-client-common/pom.xml | 1 + .../apache/hudi/config/HoodieWriteConfig.java | 1 + .../HoodieMetricsCloudWatchConfig.java | 47 ++++++++++--------- .../config/metrics/HoodieMetricsConfig.java | 1 - hudi-flink-datasource/hudi-flink/pom.xml | 6 +++ 6 files changed, 33 insertions(+), 25 deletions(-) rename {hudi-aws/src/main/java/org/apache/hudi/config => hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics}/HoodieMetricsCloudWatchConfig.java (65%) diff --git a/hudi-aws/src/main/java/org/apache/hudi/aws/cloudwatch/CloudWatchReporter.java b/hudi-aws/src/main/java/org/apache/hudi/aws/cloudwatch/CloudWatchReporter.java index e4bc598ce..b208ec922 100644 --- a/hudi-aws/src/main/java/org/apache/hudi/aws/cloudwatch/CloudWatchReporter.java +++ b/hudi-aws/src/main/java/org/apache/hudi/aws/cloudwatch/CloudWatchReporter.java @@ -74,7 +74,7 @@ public class CloudWatchReporter extends ScheduledReporter { } public static class Builder { - private MetricRegistry registry; + private final MetricRegistry registry; private Clock clock; private String prefix; private TimeUnit rateUnit; diff --git a/hudi-client/hudi-client-common/pom.xml b/hudi-client/hudi-client-common/pom.xml index a348a6392..ddfd4a2fd 100644 --- a/hudi-client/hudi-client-common/pom.xml +++ b/hudi-client/hudi-client-common/pom.xml @@ -40,6 +40,7 @@ org.apache.hudi hudi-aws ${project.version} + provided org.apache.hudi diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java index dd5c0bfd6..42208a073 100644 --- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java +++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java @@ -48,6 +48,7 @@ import org.apache.hudi.common.util.Option; import org.apache.hudi.common.util.ReflectionUtils; import org.apache.hudi.common.util.StringUtils; import org.apache.hudi.common.util.ValidationUtils; +import org.apache.hudi.config.metrics.HoodieMetricsCloudWatchConfig; import org.apache.hudi.config.metrics.HoodieMetricsConfig; import org.apache.hudi.config.metrics.HoodieMetricsDatadogConfig; import org.apache.hudi.config.metrics.HoodieMetricsGraphiteConfig; diff --git a/hudi-aws/src/main/java/org/apache/hudi/config/HoodieMetricsCloudWatchConfig.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsCloudWatchConfig.java similarity index 65% rename from hudi-aws/src/main/java/org/apache/hudi/config/HoodieMetricsCloudWatchConfig.java rename to hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsCloudWatchConfig.java index e4e46d5a1..3c4b860e6 100644 --- a/hudi-aws/src/main/java/org/apache/hudi/config/HoodieMetricsCloudWatchConfig.java +++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsCloudWatchConfig.java @@ -7,16 +7,17 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ -package org.apache.hudi.config; +package org.apache.hudi.config.metrics; import org.apache.hudi.common.config.ConfigClassProperty; import org.apache.hudi.common.config.ConfigGroups; @@ -36,22 +37,22 @@ public class HoodieMetricsCloudWatchConfig extends HoodieConfig { public static final String CLOUDWATCH_PREFIX = "hoodie.metrics.cloudwatch"; public static final ConfigProperty REPORT_PERIOD_SECONDS = ConfigProperty - .key(CLOUDWATCH_PREFIX + ".report.period.seconds") - .defaultValue(60) - .sinceVersion("0.10.0") - .withDocumentation("Reporting interval in seconds"); + .key(CLOUDWATCH_PREFIX + ".report.period.seconds") + .defaultValue(60) + .sinceVersion("0.10.0") + .withDocumentation("Reporting interval in seconds"); public static final ConfigProperty METRIC_PREFIX = ConfigProperty - .key(CLOUDWATCH_PREFIX + ".metric.prefix") - .defaultValue("") - .sinceVersion("0.10.0") - .withDocumentation("Metric prefix of reporter"); + .key(CLOUDWATCH_PREFIX + ".metric.prefix") + .defaultValue("") + .sinceVersion("0.10.0") + .withDocumentation("Metric prefix of reporter"); public static final ConfigProperty METRIC_NAMESPACE = ConfigProperty - .key(CLOUDWATCH_PREFIX + ".namespace") - .defaultValue("Hudi") - .sinceVersion("0.10.0") - .withDocumentation("Namespace of reporter"); + .key(CLOUDWATCH_PREFIX + ".namespace") + .defaultValue("Hudi") + .sinceVersion("0.10.0") + .withDocumentation("Namespace of reporter"); /* Amazon CloudWatch allows a maximum of 20 metrics per request. Choosing this as the default maximum. Reference: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html @@ -66,13 +67,13 @@ public class HoodieMetricsCloudWatchConfig extends HoodieConfig { super(); } - public static HoodieMetricsCloudWatchConfig.Builder newBuilder() { - return new HoodieMetricsCloudWatchConfig.Builder(); + static Builder newBuilder() { + return new Builder(); } - public static class Builder { + static class Builder { - private HoodieMetricsCloudWatchConfig hoodieMetricsCloudWatchConfig = new HoodieMetricsCloudWatchConfig(); + private final HoodieMetricsCloudWatchConfig hoodieMetricsCloudWatchConfig = new HoodieMetricsCloudWatchConfig(); public HoodieMetricsCloudWatchConfig.Builder fromProperties(Properties props) { this.hoodieMetricsCloudWatchConfig.getProps().putAll(props); diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsConfig.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsConfig.java index 85f98935f..a515eb702 100644 --- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsConfig.java +++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/metrics/HoodieMetricsConfig.java @@ -24,7 +24,6 @@ import org.apache.hudi.common.config.ConfigProperty; import org.apache.hudi.common.config.HoodieConfig; import org.apache.hudi.common.table.HoodieTableConfig; import org.apache.hudi.common.util.Option; -import org.apache.hudi.config.HoodieMetricsCloudWatchConfig; import org.apache.hudi.metrics.MetricsReporterType; import javax.annotation.concurrent.Immutable; diff --git a/hudi-flink-datasource/hudi-flink/pom.xml b/hudi-flink-datasource/hudi-flink/pom.xml index 97288d19c..04d45358b 100644 --- a/hudi-flink-datasource/hudi-flink/pom.xml +++ b/hudi-flink-datasource/hudi-flink/pom.xml @@ -89,6 +89,12 @@ hudi-client-common ${project.version} + + org.apache.hudi + hudi-aws + ${project.version} + provided + org.apache.hudi hudi-flink-client