{"record":{"id":"cc0e197abca30524","repo":"apache/seatunnel","slug":"cluster-s-is-not-running-please-start-the-clust","errorCode":null,"errorMessage":"cluster: %s is not running, Please start the cluster first.","messagePattern":"cluster: (.+?) is not running, Please start the cluster first\\.","errorType":"exception","errorClass":"SeaTunnelEngineException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/command/ServerExecuteCommand.java","lineNumber":130,"sourceCode":"        }\n    }\n\n    @VisibleForTesting\n    public Set<Member> showClusterMembers() {\n        HazelcastClientInstanceImpl client = null;\n        try {\n            String clusterName = serverCommandArgs.getClusterName();\n            if (StringUtils.isBlank(clusterName)) {\n                throw new SeaTunnelEngineException(\n                        \"Cluster name is required. Please specify it using -cn or --cluster option.\");\n            }\n            ClientConfig clientConfig = ConfigProvider.locateAndGetClientConfig();\n            clientConfig.setClusterName(clusterName);\n            client =\n                    ((HazelcastClientProxy) HazelcastClient.newHazelcastClient(clientConfig))\n                            .client;\n            if (!client.getLifecycleService().isRunning()) {\n                throw new SeaTunnelEngineException(\n                        String.format(\n                                \"cluster: %s is not running, Please start the cluster first.\",\n                                clusterName));\n            }\n            Set<Member> members = client.getCluster().getMembers();\n            if (members.isEmpty()) {\n                System.out.println(\"No active members found in the cluster.\");\n                return members;\n            }\n\n            Collection<Member> memberList = client.getClientClusterService().getMemberList();\n\n            Member masterMember = client.getClientClusterService().getMasterMember();\n            System.out.printf(\n                    \"%-36s %-20s %-20s %-10s\\n\", \"Member ID\", \"Address\", \"Role\", \"Version\");\n\n            for (Member member : members) {\n                System.out.printf(","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/command/ServerExecuteCommand.java#L112-L148","documentation":"After connecting a Hazelcast client with the given cluster name, showClusterMembers checks whether the client's lifecycle service reports the cluster as running. If not, it throws this SeaTunnelEngineException naming the cluster, telling the operator to start the cluster before querying members. Note that in practice the client connect usually fails earlier with its own exception if no node is listening, which is wrapped by the same method's generic handler.","triggerScenarios":"Running `seatunnel-cluster.sh -m -cn <name>` where the Hazelcast client instance reports isRunning() == false — the target cluster with that name is down or was shut down between connect and the check.","commonSituations":"Querying members after the cluster crashed, pointing at a cluster name with no running nodes, or a cluster still starting up (not yet joined) when the members command fires.","solutions":["Start the cluster first: `sh bin/seatunnel-cluster.sh -d` (with matching -cn)","Confirm the cluster process is alive (jps / ps) and Hazelcast port is listening","Verify the -cn value matches a running cluster, not a stale name","Retry after the cluster finishes startup; membership queries need a joined cluster"],"exampleFix":"// before\nsh bin/seatunnel-cluster.sh -m -cn seatunnel-cluster   # cluster not started\n// after\nsh bin/seatunnel-cluster.sh -d -cn seatunnel-cluster\nsh bin/seatunnel-cluster.sh -m -cn seatunnel-cluster","handlingStrategy":"validation","validationCode":"// Check cluster is reachable before querying members\ntry (Socket s = new Socket(host, 5801)) {\n    // cluster port reachable\n} else { start cluster first }","typeGuard":null,"tryCatchPattern":"try {\n    Set<Member> members = command.showClusterMembers();\n} catch (SeaTunnelEngineException e) {\n    if (e.getMessage().contains(\"is not running\")) {\n        log.error(\"Start the cluster with seatunnel-cluster.sh -d first\");\n    }\n}","preventionTips":["Start the cluster before running -m","Monitor cluster process liveness with jps/systemd","Retry membership queries with backoff during cluster startup","Confirm the -cn targets an actually running cluster"],"tags":["cluster","hazelcast","lifecycle","cli"],"backgroundTag":"resource-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}