diff --git a/pom.xml b/pom.xml
index 2c841c3ef..7b5fdf1f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.uid2
uid2-operator
- 5.53.6
+ 5.53.7-alpha-191-SNAPSHOT
UTF-8
diff --git a/src/main/java/com/uid2/operator/Main.java b/src/main/java/com/uid2/operator/Main.java
index eed39c78c..7009a3108 100644
--- a/src/main/java/com/uid2/operator/Main.java
+++ b/src/main/java/com/uid2/operator/Main.java
@@ -480,6 +480,7 @@ private static Vertx createVertx() {
VertxOptions vertxOptions = new VertxOptions()
.setMetricsOptions(metricOptions)
+ .setWorkerPoolSize(10000)
.setBlockedThreadCheckInterval(threadBlockedCheckInterval);
return Vertx.vertx(vertxOptions);
diff --git a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
index e2edf1333..335f4a966 100644
--- a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
+++ b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
@@ -306,7 +306,7 @@ private void setUpEncryptedRoutes(Router mainRouter, BodyHandler bodyHandler) {
mainRouter.post(V2_IDENTITY_BUCKETS.toString()).handler(bodyHandler).handler(auth.handleV1(
rc -> encryptedPayloadHandler.handle(rc, this::handleBucketsV2), Role.MAPPER));
mainRouter.post(V2_IDENTITY_MAP.toString()).handler(bodyHandler).handler(auth.handleV1(
- rc -> encryptedPayloadHandler.handle(rc, this::handleIdentityMapV2), Role.MAPPER));
+ rc -> encryptedPayloadHandler.handleNonBlocking(vertx, rc, this::handleIdentityMapV2), Role.MAPPER));
mainRouter.post(V2_KEY_LATEST.toString()).handler(bodyHandler).handler(auth.handleV1(
rc -> encryptedPayloadHandler.handle(rc, this::handleKeysRequestV2), Role.ID_READER));
mainRouter.post(V2_KEY_SHARING.toString()).handler(bodyHandler).handler(auth.handleV1(
diff --git a/src/main/java/com/uid2/operator/vertx/V2PayloadHandler.java b/src/main/java/com/uid2/operator/vertx/V2PayloadHandler.java
index 10627ab10..e32ca128e 100644
--- a/src/main/java/com/uid2/operator/vertx/V2PayloadHandler.java
+++ b/src/main/java/com/uid2/operator/vertx/V2PayloadHandler.java
@@ -14,6 +14,7 @@
import com.uid2.shared.store.ISiteStore;
import io.vertx.core.Future;
import io.vertx.core.Handler;
+import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpHeaders;
import io.vertx.core.json.JsonObject;
@@ -61,6 +62,31 @@ public void handle(RoutingContext rc, Handler apiHandler) {
handleResponse(rc, request);
}
+ public void handleNonBlocking(Vertx vertx, RoutingContext rc, Handler apiHandler) {
+ vertx.executeBlocking(
+ blockingPromise -> {
+ V2RequestUtil.V2Request request = V2RequestUtil.parseRequest(rc.body().asString(), AuthMiddleware.getAuthClient(ClientKey.class, rc), new InstantClock());
+ if (!request.isValid()) {
+ ResponseUtil.LogInfoAndSend400Response(rc, request.errorMessage);
+ blockingPromise.complete();
+ return;
+ }
+ rc.data().put("request", request.payload);
+
+ apiHandler.handle(rc);
+
+ handleResponse(rc, request);
+ blockingPromise.complete(request);
+ },
+ false,
+ blockingResult -> {
+ if (blockingResult.failed()) {
+ ResponseUtil.LogErrorAndSendResponse(ResponseUtil.ResponseStatus.GenericError, 500, rc, "");
+ }
+ });
+
+ }
+
public void handleAsync(RoutingContext rc, Function apiHandler) {
if (!enableEncryption) {
apiHandler.apply(rc);