diff --git a/src/main/java/com/uid2/optout/vertx/OptOutServiceVerticle.java b/src/main/java/com/uid2/optout/vertx/OptOutServiceVerticle.java index d049289..5197ee4 100644 --- a/src/main/java/com/uid2/optout/vertx/OptOutServiceVerticle.java +++ b/src/main/java/com/uid2/optout/vertx/OptOutServiceVerticle.java @@ -362,6 +362,14 @@ private void handleReplicate(RoutingContext routingContext) { private void handleQueue(RoutingContext routingContext) { HttpServerRequest req = routingContext.request(); + + // skip sqs queueing for validator operators (reference-operator, candidate-operator) + // this avoids triple processing of the same request + String instanceId = req.getHeader(Audit.UID_INSTANCE_ID_HEADER); + if (isValidatorOperatorRequest(instanceId)) { + return; + } + MultiMap params = req.params(); String identityHash = req.getParam(IDENTITY_HASH); String advertisingId = req.getParam(ADVERTISING_ID); @@ -491,6 +499,13 @@ private boolean isGetOrPost(HttpServerRequest req) { return method == HttpMethod.GET || method == HttpMethod.POST; } + private boolean isValidatorOperatorRequest(String instanceId) { + if (instanceId == null) { + return false; + } + return instanceId.contains("reference-operator") || instanceId.contains("candidate-operator"); + } + private void sendInternalServerError(HttpServerResponse resp, String why) { if (this.isVerbose && why != null) { resp.setStatusCode(500);