Browse Source

Fix potential NPE on getState() in PostgresBasedEdgeGrpcSessionManager

pull/14618/head
Nikita Mazurenko 7 months ago
parent
commit
d915dbeb03
  1. 10
      application/src/main/java/org/thingsboard/server/service/edge/rpc/session/manager/PostgresBasedEdgeGrpcSessionManager.java

10
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.edge.EdgeEvent;
import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.EdgeId;
import org.thingsboard.server.common.data.id.TenantId; 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.processor.PostgresGeneralEdgeEventsDispatcher;
import org.thingsboard.server.service.edge.rpc.session.EdgeSessionsHolder; import org.thingsboard.server.service.edge.rpc.session.EdgeSessionsHolder;
@ -148,8 +149,8 @@ public class PostgresBasedEdgeGrpcSessionManager extends AbstractEdgeGrpcSession
} }
private void cancelScheduleEdgeEventsCheck() { private void cancelScheduleEdgeEventsCheck() {
EdgeId edgeId = getState().getEdgeId(); EdgeSessionState state = getState();
log.trace("[{}] cancelling edge event check for edge", edgeId); log.trace("[{}] cancelling edge event check for edge", state != null ? state.getEdgeId() : "unknown");
ScheduledFuture<?> sf = edgeEventCheckFutureRef.getAndSet(null); ScheduledFuture<?> sf = edgeEventCheckFutureRef.getAndSet(null);
if (sf != null && !sf.isCancelled() && !sf.isDone()) { if (sf != null && !sf.isCancelled() && !sf.isDone()) {
@ -169,7 +170,10 @@ public class PostgresBasedEdgeGrpcSessionManager extends AbstractEdgeGrpcSession
newEventsLock.lock(); newEventsLock.lock();
try { try {
if (hasNewEvents != newEventsPresent) { 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; hasNewEvents = newEventsPresent;
} }
} finally { } finally {

Loading…
Cancel
Save