{"record":{"id":"51eb8dbc8603c0ba","repo":"apache/iceberg","slug":"failed-to-send-operator-s-coordinator-global-data-51eb8d","errorCode":null,"errorMessage":"Failed to send operator %s coordinator global data statistics to requesting subtask %d for checkpoint %d","messagePattern":"Failed to send operator (.+?) coordinator global data statistics to requesting subtask (.+?) for checkpoint (.+?)","errorType":"exception","errorClass":"FlinkRuntimeException","httpStatus":null,"severity":"error","filePath":"flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsCoordinator.java","lineNumber":166,"sourceCode":"                    \"Uncaught Exception in data statistics coordinator: {} executor\",\n                    operatorName,\n                    t);\n                ExceptionUtils.rethrowException(t);\n                return null;\n              }\n            };\n\n        coordinatorExecutor.submit(guardedCallable).get();\n      } catch (InterruptedException | ExecutionException e) {\n        throw new FlinkRuntimeException(errorMessage, e);\n      }\n    } else {\n      try {\n        callable.call();\n      } catch (Throwable t) {\n        LOG.error(\n            \"Uncaught Exception in data statistics coordinator: {} executor\", operatorName, t);\n        throw new FlinkRuntimeException(errorMessage, t);\n      }\n    }\n  }\n\n  public void runInCoordinatorThread(Runnable runnable) {\n    this.coordinatorExecutor.execute(\n        new ThrowableCatchingRunnable(\n            throwable ->\n                this.coordinatorThreadFactory.uncaughtException(Thread.currentThread(), throwable),\n            runnable));\n  }\n\n  private void runInCoordinatorThread(ThrowingRunnable<Throwable> action, String actionString) {\n    ensureStarted();\n    runInCoordinatorThread(\n        () -> {\n          try {\n            action.run();","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsCoordinator.java#L148-L184","documentation":"When callInCoordinatorThread executes the callable directly on the coordinator thread (no executor hand-off), any Throwable thrown while sending global data statistics to a requesting subtask is logged and rethrown as a FlinkRuntimeException with the message 'Failed to send operator %s coordinator global data statistics to requesting subtask %d for checkpoint %d'. This converts coordinator-thread failures into job failures carrying operator, subtask, and checkpoint context.","triggerScenarios":"A throwable escapes callable.call() executed inline on the coordinator thread while sending global statistics to a requesting subtask for a checkpoint; typically triggered via handleEventFromOperator processing a RequestGlobalStatisticsEvent.","commonSituations":"Failures during checkpoint-triggered statistics distribution: serialization of the sketch/statistics payload, downstream channel errors, or bugs in range-bound computation on the coordinator.","solutions":["Read the wrapped cause ('Uncaught Exception in data statistics coordinator') for the real failure","Verify network/channel health between coordinator and subtasks; channel errors often surface here","Check payload size — very large sketches can fail serialization or allocation; reduce statistics cardinality","Upgrade or file an issue if the cause points to Iceberg code, with the full stack trace"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  coordinator.callInCoordinatorThread(callable, errorMessage, operatorName, subtaskId, checkpointId);\n} catch (FlinkRuntimeException e) {\n  Throwable root = ExceptionUtils.stripCompletionException(e.getCause());\n  LOG.error(\"Global statistics send to subtask failed: {}\", root.getMessage(), root);\n  throw e;\n}","preventionTips":["Keep sketch payloads small by bounding tracked keys","Ensure stable network between JobManager and TaskManagers","Run consistent connector versions to avoid serialization mismatches"],"tags":["flink","coordinator","checkpoint","data-statistics"],"backgroundTag":"api-error-response","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}