{"record":{"id":"fde53b25e9ed2f32","repo":"apache/cassandra","slug":"could-not-perform-startup-sequence-and-join-cluste","errorCode":null,"errorMessage":"Could not perform startup sequence and join cluster","messagePattern":"Could not perform startup sequence and join cluster","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"critical","filePath":"src/java/org/apache/cassandra/service/StorageService.java","lineNumber":879,"sourceCode":"        if (CassandraRelevantProperties.SYNC_SYSTEM_PEERS_TABLES_AT_STARTUP.getBoolean())\n            SystemPeersValidator.validateAndRepair(ClusterMetadata.current());\n\n        try\n        {\n            if (joinRing)\n                joinRing();\n            else\n            {\n                ClusterMetadata metadata = ClusterMetadata.current();\n                if (metadata.myNodeState() == JOINED)\n                    BootstrapAndReplace.gossipStateToHibernate(metadata, metadata.myNodeId());\n\n                logger.info(\"Not joining ring as requested. Use JMX (StorageService->joinRing()) to initiate ring joining\");\n            }\n        }\n        catch (IOException e)\n        {\n            throw new RuntimeException(\"Could not perform startup sequence and join cluster\", e);\n        }\n\n        maybeInitializeServices();\n        completeInitialization();\n    }\n\n    private void completeInitialization()\n    {\n        initialized = true;\n    }\n\n    public static boolean cancelInProgressSequences(NodeId sequenceOwner)\n    {\n        return ClusterMetadataService.instance()\n                                     .commit(new CancelInProgressSequence(sequenceOwner),\n                                             metadata -> true,\n                                             (code, message) -> {\n                                                 logger.warn(String.format(\"Could not cancel in-progress sequence: %s\", message));","sourceCodeStart":861,"sourceCodeEnd":897,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/StorageService.java#L861-L897","documentation":"initServer performs the startup sequence (prepareToJoin, local setup, joining the ring) which may perform disk/network I/O. If an IOException escapes that sequence, it is wrapped in a RuntimeException with this message so the node fails to start rather than half-joining the ring.","triggerScenarios":"An IOException thrown during initServer's startup steps — e.g. failures touching system tables, SSTable/directory I/O during startup tasks, or schema/disk errors while preparing to join.","commonSituations":"Unreadable or corrupt data directories; disk full; permission problems on commitlog/data paths; filesystem errors during node bring-up.","solutions":["Inspect the cause (getCause) — the underlying IOException names the real failure","Check data/commitlog/hints directory permissions and disk space","Fix or restore corrupt system keyspace files, then restart","Run nodetool/filesystem checks on the volumes before restarting"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// pre-start checks\nassert readable(dataDir) && readable(commitlogDir) && freeDiskAbove(threshold);","typeGuard":null,"tryCatchPattern":"try { ss.initServer(); } catch (RuntimeException e) { log.error(\"startup failed: {}\", e.getCause(), e); throw e; }","preventionTips":["Check disk space and directory permissions before node start","Fix root-cause IOExceptions surfaced by getCause","Monitor filesystems on data/commitlog volumes"],"tags":["io","startup","filesystem"],"backgroundTag":"file-read-failed","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}