From 3d17ac3d4c5a514c33a4d9ca22eb2acc8e7c5ed3 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Mon, 25 Feb 2019 14:24:07 -0800 Subject: [PATCH] Handle onReceive logic in background thread (#7809) --- .../main/java/com/microsoft/signalr/LongPollingTransport.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/SignalR/clients/java/signalr/src/main/java/com/microsoft/signalr/LongPollingTransport.java b/src/SignalR/clients/java/signalr/src/main/java/com/microsoft/signalr/LongPollingTransport.java index 939b0b2cb7..89fbdbcd86 100644 --- a/src/SignalR/clients/java/signalr/src/main/java/com/microsoft/signalr/LongPollingTransport.java +++ b/src/SignalR/clients/java/signalr/src/main/java/com/microsoft/signalr/LongPollingTransport.java @@ -29,6 +29,7 @@ class LongPollingTransport implements Transport { private Single accessTokenProvider; private CompletableSubject receiveLoop = CompletableSubject.create(); private ExecutorService threadPool; + private ExecutorService onReceiveThread; private AtomicBoolean stopCalled = new AtomicBoolean(false); private final Logger logger = LoggerFactory.getLogger(LongPollingTransport.class); @@ -38,6 +39,7 @@ class LongPollingTransport implements Transport { this.client = client; this.pollingClient = client.cloneWithTimeOut(POLL_TIMEOUT); this.accessTokenProvider = accessTokenProvider; + this.onReceiveThread = Executors.newSingleThreadExecutor(); } //Package private active accessor for testing. @@ -98,7 +100,7 @@ class LongPollingTransport implements Transport { } else { if (response.getContent() != null) { logger.debug("Message received."); - this.onReceive(response.getContent()); + onReceiveThread.submit(() ->this.onReceive(response.getContent())); } else { logger.debug("Poll timed out, reissuing."); }