From d915dbeb03a8b6c57b955d372ca9e2f41f550be4 Mon Sep 17 00:00:00 2001 From: Nikita Mazurenko Date: Wed, 18 Mar 2026 11:11:47 +0200 Subject: [PATCH] Fix potential NPE on getState() in PostgresBasedEdgeGrpcSessionManager --- .../manager/PostgresBasedEdgeGrpcSessionManager.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/manager/PostgresBasedEdgeGrpcSessionManager.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/manager/PostgresBasedEdgeGrpcSessionManager.java index 242f513e10..13935f41cf 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/manager/PostgresBasedEdgeGrpcSessionManager.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/manager/PostgresBasedEdgeGrpcSessionManager.java @@ -27,6 +27,7 @@ import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.edge.EdgeEvent; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.service.edge.rpc.EdgeSessionState; import org.thingsboard.server.service.edge.rpc.processor.PostgresGeneralEdgeEventsDispatcher; import org.thingsboard.server.service.edge.rpc.session.EdgeSessionsHolder; @@ -148,8 +149,8 @@ public class PostgresBasedEdgeGrpcSessionManager extends AbstractEdgeGrpcSession } private void cancelScheduleEdgeEventsCheck() { - EdgeId edgeId = getState().getEdgeId(); - log.trace("[{}] cancelling edge event check for edge", edgeId); + EdgeSessionState state = getState(); + log.trace("[{}] cancelling edge event check for edge", state != null ? state.getEdgeId() : "unknown"); ScheduledFuture sf = edgeEventCheckFutureRef.getAndSet(null); if (sf != null && !sf.isCancelled() && !sf.isDone()) { @@ -169,7 +170,10 @@ public class PostgresBasedEdgeGrpcSessionManager extends AbstractEdgeGrpcSession newEventsLock.lock(); try { if (hasNewEvents != newEventsPresent) { - log.trace("[{}] set session new events flag to {} [{}]", getState().getTenantId(), newEventsPresent, getState().getEdgeId()); + EdgeSessionState state = getState(); + if (state != null) { + log.trace("[{}] set session new events flag to {} [{}]", state.getTenantId(), newEventsPresent, state.getEdgeId()); + } hasNewEvents = newEventsPresent; } } finally {