diff --git a/config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedObjectStore.java b/config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedObjectStore.java index 5e53bca2a3..1c0a0b9c00 100644 --- a/config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedObjectStore.java +++ b/config-object-store/src/main/java/org/hypertrace/config/objectstore/IdentifiedObjectStore.java @@ -86,6 +86,10 @@ protected String buildClassNameForChangeEvent(T data) { return data.getClass().getName(); } + protected Optional getDefaultPreviousValue(RequestContext requestContext, T data) { + return Optional.empty(); + } + protected List> orderFetchedObjects( List> objects) { return objects; @@ -279,7 +283,7 @@ private Optional> processUpsertResult( if (response.hasPrevConfig()) { tryReportUpdate(requestContext, result, response.getPrevConfig()); } else { - tryReportCreation(requestContext, result); + reportCreationOrDefaultUpdate(requestContext, result); } }); return optionalResult; @@ -295,12 +299,23 @@ private Optional> processUpsertResult( if (upsertedConfig.hasPrevConfig()) { tryReportUpdate(requestContext, result, upsertedConfig.getPrevConfig()); } else { - tryReportCreation(requestContext, result); + reportCreationOrDefaultUpdate(requestContext, result); } }); return optionalResult; } + private void reportCreationOrDefaultUpdate( + RequestContext requestContext, ContextualConfigObject result) { + Optional defaultPreviousValue = + getDefaultPreviousValue(requestContext, result.getData()); + if (defaultPreviousValue.isPresent()) { + tryReportUpdate(requestContext, result, defaultPreviousValue.get()); + } else { + tryReportCreation(requestContext, result); + } + } + private DeletedContextualConfigObject processDeleteResult( RequestContext requestContext, ContextSpecificConfig deletedConfig) { DeletedContextualConfigObject deletedContextualConfigObject = diff --git a/config-service/gradle.lockfile b/config-service/gradle.lockfile index 93520b694b..ab8c268c76 100644 --- a/config-service/gradle.lockfile +++ b/config-service/gradle.lockfile @@ -105,6 +105,10 @@ org.eclipse.jetty:jetty-util:11.0.26=integrationTestRuntimeClasspath,runtimeClas org.hamcrest:hamcrest:2.1=integrationTestRuntimeClasspath org.hdrhistogram:HdrHistogram:2.2.2=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath org.hypertrace.bom:hypertrace-bom:0.3.74=compileClasspath,integrationTestCompileClasspath,integrationTestRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.hypertrace.config.service:label-application-rule-config-service-api:0.1.74=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath +org.hypertrace.config.service:labels-config-service-api:0.1.74=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath +org.hypertrace.config.service:spaces-config-service-api:0.1.74=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath +org.hypertrace.config.service:span-processing-config-service-api:0.1.74=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath org.hypertrace.core.documentstore:document-store:0.8.6=integrationTestCompileClasspath,integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath org.hypertrace.core.eventstore:event-store:0.1.5=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath org.hypertrace.core.grpcutils:grpc-client-rx-utils:0.13.22=integrationTestRuntimeClasspath,runtimeClasspath,testRuntimeClasspath