{"record":{"id":"39b2150e6053b840","repo":"apache/seatunnel","slug":"source-register-failed","errorCode":null,"errorMessage":"source register failed.","messagePattern":"source register failed\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java","lineNumber":363,"sourceCode":"    /**\n     * Registers this reader with the remote split enumerator.\n     *\n     * <p>Sends a {@link SourceRegisterOperation} to the enumerator at the previously resolved\n     * address, informing it that this reader subtask is ready to receive splits.\n     *\n     * @throws RuntimeException if registration fails due to communication errors\n     */\n    private void register() {\n        try {\n            runningTask\n                    .getExecutionContext()\n                    .sendToMember(\n                            new SourceRegisterOperation(\n                                    currentTaskLocation, enumeratorTaskLocation),\n                            enumeratorTaskAddress)\n                    .get();\n        } catch (InterruptedException | ExecutionException e) {\n            log.warn(\"source register failed.\", e);\n            throw new RuntimeException(e);\n        }\n    }\n\n    private void startFlushTimer() {\n        if (flushIntervalMs <= 0) {\n            return;\n        }\n        flushFuture =\n                runningTask\n                        .getExecutionContext()\n                        .getTaskExecutionService()\n                        .registerTimerFlushTask(\n                                currentTaskLocation, this::onTimerTick, flushIntervalMs);\n        log.info(\n                \"Registered flush timer for source task {}, intervalMs={}\",\n                currentTaskLocation,\n                flushIntervalMs);","sourceCodeStart":345,"sourceCodeEnd":381,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java#L345-L381","documentation":"In SourceFlowLifeCycle.register(), a source reader asynchronously registers itself with its split enumerator via SourceRegisterOperation sent to the enumerator's member address. If the send/future is interrupted or fails, the warning is logged and a RuntimeException is thrown, failing the reader's open. Without registration the enumerator never learns about this reader, so split assignment cannot proceed.","triggerScenarios":"sendToMember(...).get() throws InterruptedException (task interrupted) or ExecutionException (remote operation failed: enumerator task not yet running, member unreachable, operation rejected).","commonSituations":"Enumerator task startup slower than reader startup (race on job start); network instability between Zeta cluster members; enumerator task failed/restarted while readers open; job cancellation interrupting the registration wait.","solutions":["Retry the job — transient races between reader and enumerator startup usually resolve on restart.","Check cluster member connectivity and that the enumerator task did not fail (look for earlier enumerator errors in the log).","Increase startup-related timeouts if the enumerator is slow to initialize (large split enumeration).","If persistent, verify the connector's enumerator doesn't crash on init (bad source config, unreachable source system)."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"null","typeGuard":"null","tryCatchPattern":"try {\n    sourceFlowLifeCycle.register();\n} catch (RuntimeException e) {\n    // retry once; registration races with enumerator startup are usually transient\n    retryWithBackoff(() -> sourceFlowLifeCycle.register(), 2);\n}","preventionTips":["Ensure enumerator task starts reliably (fix source-config errors first)","Keep Zeta cluster networking healthy between members","Watch for enumerator task failures at job start"],"tags":["zeta-engine","source-reader","cluster-communication"],"backgroundTag":"request-timeout","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}