diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ca588157..546d9288 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -54,7 +54,7 @@ kotlin-stdlibJdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", versio commons-compress = { module = "org.apache.commons:commons-compress", version = "1.21" } jersey-common = { module = "org.glassfish.jersey.core:jersey-common", version = "2.34" } -slf4j-log4jimpl = { module = "org.apache.logging.log4j:log4j-slf4j-impl", version = "2.15.0" } +slf4j-log4jimpl = { module = "org.apache.logging.log4j:log4j-slf4j-impl", version = "2.16.0" } slf4j-api = { module = "org.slf4j:slf4j-api", version = "1.7.30" } diff --git a/labels-config-service-impl/src/main/java/org/hypertrace/label/config/service/LabelsConfigServiceImpl.java b/labels-config-service-impl/src/main/java/org/hypertrace/label/config/service/LabelsConfigServiceImpl.java index c24f49ea..c6b98148 100644 --- a/labels-config-service-impl/src/main/java/org/hypertrace/label/config/service/LabelsConfigServiceImpl.java +++ b/labels-config-service-impl/src/main/java/org/hypertrace/label/config/service/LabelsConfigServiceImpl.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; @@ -246,7 +247,7 @@ public void updateLabel( responseObserver.onError(new StatusRuntimeException(Status.INVALID_ARGUMENT)); return; } - if (isDuplicateKey(requestContext, updateLabelData.getKey())) { + if (isDuplicateKey(requestContext, request.getId(), updateLabelData.getKey())) { responseObserver.onError(new StatusRuntimeException(Status.ALREADY_EXISTS)); return; } @@ -301,6 +302,11 @@ public void deleteLabel( } } + private boolean isDuplicateKey(RequestContext requestContext, String id, String key) { + return Optional.ofNullable(getLabelsMap(requestContext).get(key)).stream() + .anyMatch(label -> !label.getId().equals(id)); + } + private boolean isDuplicateKey(RequestContext requestContext, String key) { return getLabelsMap(requestContext).containsKey(key); } diff --git a/labels-config-service-impl/src/test/java/org/hypertrace/label/config/service/LabelsConfigServiceImplTest.java b/labels-config-service-impl/src/test/java/org/hypertrace/label/config/service/LabelsConfigServiceImplTest.java index 85f1ab6f..cca2ae14 100644 --- a/labels-config-service-impl/src/test/java/org/hypertrace/label/config/service/LabelsConfigServiceImplTest.java +++ b/labels-config-service-impl/src/test/java/org/hypertrace/label/config/service/LabelsConfigServiceImplTest.java @@ -253,7 +253,8 @@ void test_updateLabel() { .build()); }); assertEquals(Status.ALREADY_EXISTS, Status.fromThrowable(exception1)); - // Updating the labels by appending the keys of labels with a "new" + + // Updating the labels by adding description List