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 {