From 313e7adb4c25e924b13a5ffac43cd36b5abc4e3c Mon Sep 17 00:00:00 2001 From: Luca Roffia Date: Wed, 29 May 2024 10:32:16 +0200 Subject: [PATCH] fix: concurrency bug in Blazegraph --- Dockerfile | 10 +++++----- .../unibo/arces/wot/sepa/engine/core/Engine.java | 2 +- .../sepa/engine/processing/QueryProcessor.java | 3 +-- .../sepa/engine/processing/UpdateProcessor.java | 3 +-- .../processing/endpoint/JenaInMemoryEndpoint.java | 5 ----- .../processing/endpoint/RemoteEndpoint.java | 12 ------------ .../processing/endpoint/SPARQLEndpoint.java | 1 - .../engine/processing/subscriptions/SPUNaive.java | 2 +- pom.xml | 15 ++++++++------- 9 files changed, 17 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3b9c2b2c..d95d3a4d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,12 +2,15 @@ # 1) docker build -t vaimeedock/sepa:latest -f Dockerfile . # 2) docker login -u YOUR-USER-NAME. # Build command on Apple M1: docker buildx build --platform linux/amd64 --push -t vaimeedock/engine . -FROM maven:3.6-jdk-13 as BUILD +FROM maven:3.6-jdk-11 as BUILD COPY . . +ENV JMX_HOSTNAME=0.0.0.0 +ENV JMX_PORT=7090 + RUN mvn clean package -FROM openjdk:13-jdk-alpine +FROM openjdk:11.0-jre COPY --from=BUILD ./engine/target/engine-1.0.0-SNAPSHOT.jar /engine.jar COPY --from=BUILD ./engine/src/main/resources/jmxremote.password /jmxremote.password @@ -19,9 +22,6 @@ COPY --from=BUILD ./engine/src/main/resources/endpoints /endpoints RUN chmod 600 /jmxremote.password -ENV JMX_HOSTNAME=0.0.0.0 -ENV JMX_PORT=7090 - EXPOSE 8000 EXPOSE 9000 EXPOSE ${JMX_PORT} diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/core/Engine.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/core/Engine.java index f7ebfd3b..21d16480 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/core/Engine.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/core/Engine.java @@ -41,7 +41,7 @@ */ public class Engine implements EngineMBean { - private final static String version = "0.13.0"; + private final static String version = "v0.14.3"; private EngineProperties properties = null; diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/QueryProcessor.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/QueryProcessor.java index 66fa63ee..fe56f801 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/QueryProcessor.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/QueryProcessor.java @@ -45,6 +45,7 @@ public QueryProcessor(SPARQL11Properties properties) throws SEPAProtocolExceptio SEPABeans.registerMBean("SEPA:type=" + this.getClass().getSimpleName(), this); if (properties.getProtocolScheme().equals("jena-api") && properties.getHost().equals("in-memory")) endpoint = new JenaInMemoryEndpoint(); + else endpoint = new RemoteEndpoint(); } public Response process(InternalQueryRequest req) throws SEPASecurityException, IOException { @@ -59,9 +60,7 @@ public Response process(InternalQueryRequest req) throws SEPASecurityException, Response ret; do { long start = Timings.getTime(); - if (!(properties.getProtocolScheme().equals("jena-api") && properties.getHost().equals("in-memory"))) endpoint = new RemoteEndpoint(); ret = endpoint.query(request); - endpoint.close(); long stop = Timings.getTime(); UpdateProcessorBeans.timings(start, stop); diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/UpdateProcessor.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/UpdateProcessor.java index 865f6391..5aa5629c 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/UpdateProcessor.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/UpdateProcessor.java @@ -45,6 +45,7 @@ public UpdateProcessor(SPARQL11Properties properties) throws SEPAProtocolExcepti SEPABeans.registerMBean("SEPA:type=" + this.getClass().getSimpleName(), this); if (properties.getProtocolScheme().equals("jena-api") && properties.getHost().equals("in-memory")) endpoint = new JenaInMemoryEndpoint(); + else endpoint = new RemoteEndpoint(); } public Response process(InternalUpdateRequest req) throws SEPASecurityException, IOException { @@ -59,9 +60,7 @@ public Response process(InternalUpdateRequest req) throws SEPASecurityException, int n = 0; do { long start = Timings.getTime(); - if (!(properties.getProtocolScheme().equals("jena-api") && properties.getHost().equals("in-memory"))) endpoint = new RemoteEndpoint(); ret = endpoint.update(request); - endpoint.close(); long stop = Timings.getTime(); UpdateProcessorBeans.timings(start, stop); diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/JenaInMemoryEndpoint.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/JenaInMemoryEndpoint.java index 646d1a24..efdf2afb 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/JenaInMemoryEndpoint.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/JenaInMemoryEndpoint.java @@ -102,9 +102,4 @@ public Response update(UpdateRequest req) { }); return new UpdateResponse("Jena-in-memory-update"); } - - @Override - public void close() { - - } } diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/RemoteEndpoint.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/RemoteEndpoint.java index a1d7d3e5..5d5a23ae 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/RemoteEndpoint.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/RemoteEndpoint.java @@ -1,13 +1,10 @@ package it.unibo.arces.wot.sepa.engine.processing.endpoint; -import java.io.IOException; - import it.unibo.arces.wot.sepa.api.SPARQL11Protocol; import it.unibo.arces.wot.sepa.commons.exceptions.SEPASecurityException; import it.unibo.arces.wot.sepa.commons.request.QueryRequest; import it.unibo.arces.wot.sepa.commons.request.UpdateRequest; import it.unibo.arces.wot.sepa.commons.response.Response; -import it.unibo.arces.wot.sepa.logging.Logging; public class RemoteEndpoint implements SPARQLEndpoint { SPARQL11Protocol endpoint; @@ -26,13 +23,4 @@ public Response update(UpdateRequest req) { return endpoint.update(req); } - @Override - public void close() { - try { - endpoint.close(); - } catch (IOException e) { - Logging.logger.error(e.getMessage()); - } - } - } diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/SPARQLEndpoint.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/SPARQLEndpoint.java index 2fb2a0fb..53916198 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/SPARQLEndpoint.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/endpoint/SPARQLEndpoint.java @@ -7,5 +7,4 @@ public interface SPARQLEndpoint { public Response query(QueryRequest req); public Response update(UpdateRequest req); - public void close(); } diff --git a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/subscriptions/SPUNaive.java b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/subscriptions/SPUNaive.java index d2f5d422..447894e6 100644 --- a/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/subscriptions/SPUNaive.java +++ b/engine/src/main/java/it/unibo/arces/wot/sepa/engine/processing/subscriptions/SPUNaive.java @@ -81,7 +81,7 @@ public Notification postUpdateInternalProcessing(UpdateResponse res) throws SEPA ret = manager.processQuery(subscribe); } catch (SEPASecurityException | IOException e) { if (Logging.logger.isTraceEnabled()) e.printStackTrace(); - Logging.logger.log(Logging.getLevel("spu"),"SEPASecurityException "+e.getMessage()); + Logging.logger.log(Logging.getLevel("spu"),"Exception on query procesing "+e.getMessage()); throw new SEPAProcessingException("postUpdateInternalProcessing exception "+e.getMessage()); } diff --git a/pom.xml b/pom.xml index 3aa66c13..ebc1863d 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,13 @@ SEPA Project https://github.com/vaimee/SEPA.git + + 11 + 11 + UTF-8 + 1.0.0-SNAPSHOT + 0 + GNU Lesser General Public License v3.0 @@ -43,13 +50,7 @@ scm:git:ssh://github.com/vaimee/sepa.git https://github.com/vaimee/SEPA - - 13 - 13 - UTF-8 - v0.14.0 - 0 - + github