{"record":{"id":"4058712f2f8a263c","repo":"aeron-io/aeron","slug":"invalid-member-value-idandendpoints-within-value","errorCode":null,"errorMessage":"invalid member value: ${idAndEndpoints} within: ${value}","messagePattern":"invalid member value: (.+?) within: (.+?)","errorType":"validation","errorClass":"ClusterException","httpStatus":null,"severity":"error","filePath":"aeron-cluster/src/main/java/io/aeron/cluster/ClusterMember.java","lineNumber":563,"sourceCode":"    public static ClusterMember[] parse(final String value)\n    {\n        if (null == value || value.isEmpty())\n        {\n            return ClusterMember.EMPTY_MEMBERS;\n        }\n\n        final String[] memberValues = value.split(\"\\\\|\");\n        final int length = memberValues.length;\n        final ClusterMember[] members = new ClusterMember[length];\n\n        for (int i = 0; i < length; i++)\n        {\n            final String idAndEndpoints = memberValues[i];\n            final String[] memberAttributes = idAndEndpoints.split(\",\");\n\n            if (memberAttributes.length < 6 || 8 < memberAttributes.length)\n            {\n                throw new ClusterException(\"invalid member value: \" + idAndEndpoints + \" within: \" + value);\n            }\n\n            final int clusterMemberId;\n            try\n            {\n                clusterMemberId = Integer.parseInt(memberAttributes[0]);\n            }\n            catch (final NumberFormatException ex)\n            {\n                throw new ClusterException(\"invalid cluster member id, must be an integer value\", ex);\n            }\n\n            final String archiveResponseEndpoint = 6 < memberAttributes.length ? memberAttributes[6] : null;\n            final String egressResponseEndpoint = 7 < memberAttributes.length ? memberAttributes[7] : null;\n\n            String endpoints = String.join(\n                \",\",\n                memberAttributes[1],","sourceCodeStart":545,"sourceCodeEnd":581,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-cluster/src/main/java/io/aeron/cluster/ClusterMember.java#L545-L581","documentation":"ClusterMember.parse splits a comma-separated member list string (e.g. used in aeron.cluster.members) and requires each member to have between 6 and 8 comma-separated attributes (memberId plus endpoints). Malformed members are rejected with this exception.","triggerScenarios":"Passing a member specification string to ClusterMember.parse where some member entry has fewer than 6 or more than 8 comma-separated fields, e.g. missing an endpoint.","commonSituations":"Hand-edited aeron.cluster.members config with a dropped or extra comma, missing catchup/transfer endpoints, or whitespace/format typos in cluster deployment tooling.","solutions":["Ensure each member has 6-8 comma-separated fields: id,client-facing,member,log,archive,replication[,catchup][,egress]","Count the commas in each member entry; fix missing/extra commas","Generate the members string programmatically from a template to avoid typos","Validate config with ClusterMember.parse in a startup self-check"],"exampleFix":"// before\n\"0,localhost:20000,localhost:20001,localhost:20002,localhost:20003,localhost:20004,localhost:20005,localhost:20006,localhost:20007\" // 9 fields\n// after\n\"0,localhost:20000,localhost:20001,localhost:20002,localhost:20003,localhost:20004,localhost:20005,localhost:20006\" // 8 fields","handlingStrategy":"validation","validationCode":"boolean isValidMemberEntry(String entry) {\n    int n = entry.split(\",\").length;\n    return n >= 6 && n <= 8;\n}","typeGuard":null,"tryCatchPattern":"try {\n    ClusterMember.parse(membersString);\n} catch (ClusterException e) {\n    log.error(\"bad aeron.cluster.members value: \" + membersString, e);\n}","preventionTips":["Generate member strings from a deployment template","Validate the members config at startup before joining","Keep one line per member spec and review commas in code review"],"tags":["aeron","config","parsing","cluster-members"],"backgroundTag":"invalid-argument-format","analyzedSha":"6d60124e15e35c11b49ba2e3c2c2858a09a18803","analyzedAt":"2026-09-12T11:17:07.683Z","contentChangedAt":"2026-09-12T11:17:07.683Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}