From 9d3adb6ab8ba80de4cb42cc32333cfd835aa528c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Galland?= Date: Thu, 8 Nov 2018 19:46:51 +0100 Subject: [PATCH] [sre] Send events locally event if an error occured when sending over the network. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Galland --- .../kernel/services/zeromq/Messages.java | 1 + .../services/zeromq/ZeroMQNetworkService.java | 15 +++++++++++---- .../kernel/services/zeromq/messages.properties | 1 + .../janusproject/tests/bugs/network/Bug883.java | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/Messages.java b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/Messages.java index 14d3e77f93..6ba633dcd1 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/Messages.java +++ b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/Messages.java @@ -42,6 +42,7 @@ public class Messages extends NLS { public static String ZeroMQNetworkService_14; public static String ZeroMQNetworkService_15; public static String ZeroMQNetworkService_16; + public static String ZeroMQNetworkService_17; public static String ZeroMQNetworkService_2; public static String ZeroMQNetworkService_20; public static String ZeroMQNetworkService_3; diff --git a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/ZeroMQNetworkService.java b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/ZeroMQNetworkService.java index 27baeed67b..f764e8b075 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/ZeroMQNetworkService.java +++ b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/ZeroMQNetworkService.java @@ -279,10 +279,17 @@ public synchronized void publish(Scope scope, Event data) throws Exception { if (this.validatedURI == null) { this.logger.getKernelLogger().fine(MessageFormat.format(Messages.ZeroMQNetworkService_0, data.getSource().getSpaceID(), scope, data)); } else if (!this.receptionSocketsPerRemoteKernel.isEmpty()) { - final SpaceID spaceID = data.getSource().getSpaceID(); - final EventEnvelope env = this.serializer.serialize(new EventDispatch(spaceID, data, scope)); - send(env); - this.logger.getKernelLogger().fine(MessageFormat.format(Messages.ZeroMQNetworkService_1, spaceID, data)); + // Send asynchronously + this.executorService.execute(() -> { + try { + final SpaceID spaceID = data.getSource().getSpaceID(); + final EventEnvelope env = this.serializer.serialize(new EventDispatch(spaceID, data, scope)); + send(env); + this.logger.getKernelLogger().fine(MessageFormat.format(Messages.ZeroMQNetworkService_1, spaceID, data)); + } catch (Exception exception) { + this.logger.getKernelLogger().severe(MessageFormat.format(Messages.ZeroMQNetworkService_17, data, scope, exception)); + } + }); } } diff --git a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/messages.properties b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/messages.properties index 3aeeb2b732..6d4fb6cab4 100644 --- a/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/messages.properties +++ b/sre/io.janusproject/io.janusproject.plugin/src/io/janusproject/kernel/services/zeromq/messages.properties @@ -7,6 +7,7 @@ ZeroMQNetworkService_13=Error in poller for {0} ZeroMQNetworkService_14=An unexpected error occured in the ZeroMQ layer: {0} ZeroMQNetworkService_15=ZeroMQ PUB socket is binded to {0} ZeroMQNetworkService_16=ZeroMQ shutdown +ZeroMQNetworkService_17=Cannot emit the event ''{0}'' with the scope ''{1}'' to remote hosts: {2}. ZeroMQNetworkService_2=Connecting peer {0} => {1} ZeroMQNetworkService_20=The space {0} is not a subclass of DistributedSpace. ZeroMQNetworkService_3=Connected to peer {0} diff --git a/sre/io.janusproject/io.janusproject.tests/src/test/java/io/janusproject/tests/bugs/network/Bug883.java b/sre/io.janusproject/io.janusproject.tests/src/test/java/io/janusproject/tests/bugs/network/Bug883.java index 3d28a936b3..7c4096f338 100644 --- a/sre/io.janusproject/io.janusproject.tests/src/test/java/io/janusproject/tests/bugs/network/Bug883.java +++ b/sre/io.janusproject/io.janusproject.tests/src/test/java/io/janusproject/tests/bugs/network/Bug883.java @@ -64,7 +64,7 @@ public void runSender() throws Exception { } @SarlSpecification(SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING) - @SarlElementType(SarlPackage.SARL_AGENT) + @SarlElementType(SarlPackage.SARL_EVENT) static class TestEvent extends Event { }