From c6201810f5ed7b27ac8626e70d6423285486e5b6 Mon Sep 17 00:00:00 2001 From: Andrii Landiak Date: Wed, 19 Aug 2026 12:13:47 +0300 Subject: [PATCH] Do not strand edge sync when an event fetcher fails --- .../server/service/edge/rpc/session/EdgeGrpcSession.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/EdgeGrpcSession.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/EdgeGrpcSession.java index 73a3b53e4c..fd0e555d9b 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/EdgeGrpcSession.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/session/EdgeGrpcSession.java @@ -366,7 +366,12 @@ public class EdgeGrpcSession implements EdgeSession { @Override public void onFailure(Throwable t) { - log.error("[{}][{}] Exception during sync process", getTenantId(), getEdgeId(), t); + log.error("[{}][{}] Exception during sync process, skipping fetcher {} and continuing", + getTenantId(), getEdgeId(), next.getClass().getSimpleName(), t); + // Keep walking the cursor: returning here leaves syncInProgress set for the life of the + // session, so the edge never receives SyncCompletedMsg and both general downlink delivery + // and uplink processing stay gated until the session is re-established. + doSync(cursor); } }, ctx.getGrpcCallbackExecutorService()); } else {