From 758933040658322c53848076928be8cb8c389ea6 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Wed, 5 Jan 2022 16:50:48 +0200 Subject: [PATCH] Do not update ws lastActivity in case of general response - only on pong response. Clean up properly subscription map in case canceling subsription --- .../server/controller/plugin/TbWebSocketHandler.java | 1 - .../DefaultTbEntityDataSubscriptionService.java | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java b/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java index 9fdda2215d..febb9ac998 100644 --- a/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java +++ b/application/src/main/java/org/thingsboard/server/controller/plugin/TbWebSocketHandler.java @@ -290,7 +290,6 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr log.trace("[{}] Failed to send msg", session.getId(), result.getException()); closeSession(CloseStatus.SESSION_NOT_RELIABLE); } else { - lastActivityTime = System.currentTimeMillis(); String msg = msgQueue.poll(); if (msg != null) { sendMsgInternal(msg); diff --git a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java index c0f882bfe8..89f0475bb7 100644 --- a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java +++ b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java @@ -499,6 +499,12 @@ public class DefaultTbEntityDataSubscriptionService implements TbEntityDataSubsc if (ctx != null) { ctx.cancelTasks(); ctx.clearSubscriptions(); + if (ctx.getSessionId() != null) { + Map sessionSubs = subscriptionsBySessionId.get(ctx.getSessionId()); + if (sessionSubs != null) { + sessionSubs.remove(ctx.getCmdId()); + } + } } }