From 147f247216c6f863b2ad99e89625bc1ea18633a5 Mon Sep 17 00:00:00 2001 From: Leonid Kozhinov Date: Sun, 17 Mar 2024 03:06:59 +0100 Subject: [PATCH] Remove usage of clone --- .../workers/config/KubeResourceConfig.java | 29 +++++++------------ .../workers/config/WorkerConfigsProvider.java | 6 ++-- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/KubeResourceConfig.java b/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/KubeResourceConfig.java index 2c00bfcde10..b4039d745c5 100644 --- a/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/KubeResourceConfig.java +++ b/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/KubeResourceConfig.java @@ -17,7 +17,7 @@ * the "<EMPTY>" literal to represent an empty string. */ @EachProperty("airbyte.worker.kube-job-configs") -public final class KubeResourceConfig implements Cloneable { +public final class KubeResourceConfig { public static final String EMPTY_VALUE = ""; @@ -34,25 +34,18 @@ public KubeResourceConfig(@Parameter final String name) { this.name = name; } - public KubeResourceConfig clone() { - try { - return (KubeResourceConfig) super.clone(); - } catch (final CloneNotSupportedException e) { - // Unlikely, but in the worst case, we will get this error when running tests. - throw new RuntimeException(e); - } - } + public KubeResourceConfig merge(KubeResourceConfig other) { + var merged = new KubeResourceConfig(name); - public KubeResourceConfig update(KubeResourceConfig other) { - annotations = useOtherIfEmpty(other.annotations, annotations); - labels = useOtherIfEmpty(other.labels, labels); - nodeSelectors = useOtherIfEmpty(other.nodeSelectors, nodeSelectors); - cpuLimit = useOtherIfEmpty(other.cpuLimit, cpuLimit); - cpuRequest = useOtherIfEmpty(other.cpuRequest, cpuRequest); - memoryLimit = useOtherIfEmpty(other.memoryLimit, memoryLimit); - memoryRequest = useOtherIfEmpty(other.memoryRequest, memoryRequest); + merged.setAnnotations(useOtherIfEmpty(annotations, other.annotations)); + merged.setLabels(useOtherIfEmpty(labels, other.labels)); + merged.setNodeSelectors(useOtherIfEmpty(nodeSelectors, other.nodeSelectors)); + merged.setCpuLimit(useOtherIfEmpty(cpuLimit, other.cpuLimit)); + merged.setCpuRequest(useOtherIfEmpty(cpuRequest, other.cpuRequest)); + merged.setMemoryLimit(useOtherIfEmpty(memoryLimit, other.memoryLimit)); + merged.setMemoryRequest(useOtherIfEmpty(memoryRequest, other.memoryRequest)); - return this; + return merged; } public String getName() { diff --git a/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/WorkerConfigsProvider.java b/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/WorkerConfigsProvider.java index ecdeaf4c606..9ea6a88f720 100644 --- a/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/WorkerConfigsProvider.java +++ b/airbyte-commons-with-dependencies/src/main/java/io/airbyte/commons/workers/config/WorkerConfigsProvider.java @@ -282,7 +282,7 @@ private Optional getKubeResourceConfig(final KubeResourceKey if (defaultConfig.isEmpty()) { return variantConfig; } - return variantConfig.map(kubeResourceConfig -> defaultConfig.get().clone().update(kubeResourceConfig)).or(() -> defaultConfig); + return variantConfig.map(kubeResourceConfig -> kubeResourceConfig.merge(defaultConfig.get())).or(() -> defaultConfig); } private static Optional getKubeResourceConfigByType( @@ -301,7 +301,7 @@ private static Optional getKubeResourceConfigByType( if (defaultConfig.isEmpty()) { return typeConfig; } - return typeConfig.map(kubeResourceConfig -> defaultConfig.get().clone().update(kubeResourceConfig)).or(() -> defaultConfig); + return typeConfig.map(kubeResourceConfig -> kubeResourceConfig.merge(defaultConfig.get())).or(() -> defaultConfig); } private static Optional getKubeResourceConfigBySubType(final Map configBySubType, @@ -319,7 +319,7 @@ private static Optional getKubeResourceConfigBySubType(final if (defaultConfig.isEmpty()) { return subTypeConfig; } - return subTypeConfig.map(kubeResourceConfig -> defaultConfig.get().clone().update(kubeResourceConfig)).or(() -> defaultConfig); + return subTypeConfig.map(kubeResourceConfig -> kubeResourceConfig.merge(defaultConfig.get())).or(() -> defaultConfig); } private void validateIsolatedPoolConfigInitialization(final boolean useCustomNodeSelector, final Map isolatedNodeSelectors) {