{"record":{"id":"0f5207f430000b3a","repo":"apache/seatunnel","slug":"master-not-yet-known","errorCode":null,"errorMessage":"master not yet known","messagePattern":"master not yet known","errorType":"exception","errorClass":"RetryableHazelcastException","httpStatus":null,"severity":"warning","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/protocol/task/AbstractSeaTunnelMessageTask.java","lineNumber":83,"sourceCode":"    @Override\n    public Permission getRequiredPermission() {\n        return null;\n    }\n\n    @Override\n    public String getDistributedObjectName() {\n        return null;\n    }\n\n    protected <V> Data toData(V v) {\n        return nodeEngine.getSerializationService().toData(v);\n    }\n\n    @Override\n    protected InvocationBuilder getInvocationBuilder(Operation operation) {\n        Address masterAddress = nodeEngine.getMasterAddress();\n        if (masterAddress == null) {\n            throw new RetryableHazelcastException(\"master not yet known\");\n        }\n        return nodeEngine\n                .getOperationService()\n                .createInvocationBuilder(SeaTunnelServer.SERVICE_NAME, operation, masterAddress);\n    }\n\n    protected SeaTunnelServer getSeaTunnelService() {\n        return getService(SeaTunnelServer.SERVICE_NAME);\n    }\n}\n","sourceCodeStart":65,"sourceCodeEnd":94,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/protocol/task/AbstractSeaTunnelMessageTask.java#L65-L94","documentation":"AbstractSeaTunnelMessageTask.getInvocationBuilder needs the cluster master address to route SeaTunnel operations (job submit, etc.). If nodeEngine.getMasterAddress() returns null - the member has not yet discovered who the master is - it throws RetryableHazelcastException 'master not yet known', signalling the caller to retry later. This is an expected transient condition during cluster formation.","triggerScenarios":"Submitting a REST/protocol request (e.g. via the REST API v2 or client task) to a node that has not yet joined a formed cluster or has not received master information from Hazelcast; master node just started or split-brain healing in progress.","commonSituations":"Client sends a request immediately after the SeaTunnel node starts, before cluster join completes; all nodes started simultaneously and master election is still ongoing; network instability making the master temporarily unknown.","solutions":["Retry the request after a short delay - the exception is explicitly RetryableHazelcastException.","Wait for the node to fully join the cluster (check 'master address' in logs) before submitting jobs.","Verify cluster connectivity and that the master node is up and elected.","If persistent, inspect Hazelcast join config and network partitions between members."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// wait until master is known before first request\nawait()\n    .atMost(60, SECONDS)\n    .pollInterval(2, SECONDS)\n    .until(() -> clusterMemberHasMaster(nodeAddress));","typeGuard":null,"tryCatchPattern":"catch (HazelcastException e) {\n    if (e instanceof RetryableHazelcastException || e.getMessage().contains(\"master not yet known\")) {\n        Thread.sleep(backoffMs);\n        return sendWithRetry(request, attempts - 1);\n    }\n    throw e;\n}","preventionTips":["Wait for the node to report a master address (logs/health endpoint) before submitting jobs.","Implement bounded retries with backoff for REST job submissions right after node start.","Keep the master node up; monitor cluster membership via the REST API."],"tags":["cluster","master-election","retryable","rest-api"],"backgroundTag":"request-timeout","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}