{"record":{"id":"3db1dd13348a758c","repo":"aeron-io/aeron","slug":"aeron-error-code-unknown-command-type-id","errorCode":"AERON_ERROR_CODE_UNKNOWN_COMMAND_TYPE_ID","errorMessage":"command={msg_type_id} unknown","messagePattern":"command=(.+?) unknown","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/c/aeron_driver_conductor.c","lineNumber":3200,"sourceCode":"\n        case AERON_COMMAND_GET_NEXT_AVAILABLE_SESSION_ID:\n        {\n            aeron_get_next_available_session_id_command_t *command = (aeron_get_next_available_session_id_command_t *)message;\n\n            if (length < sizeof(aeron_get_next_available_session_id_command_t))\n            {\n                goto malformed_command;\n            }\n\n            correlation_id = command->correlated.correlation_id;\n\n            aeron_driver_conductor_on_get_next_available_session_id(conductor, command);\n            break;\n        }\n\n        default:\n            AERON_SET_ERR(-AERON_ERROR_CODE_UNKNOWN_COMMAND_TYPE_ID, \"command=%d unknown\", msg_type_id);\n            aeron_driver_conductor_log_error(conductor);\n            break;\n    }\n\n    if (result < 0)\n    {\n        aeron_driver_conductor_on_error(conductor, aeron_errcode(), aeron_errmsg(), correlation_id);\n    }\n\n    return AERON_RB_CONTINUE;\n\nmalformed_command:\n    AERON_SET_ERR(\n        -AERON_ERROR_CODE_MALFORMED_COMMAND, \"command=%d too short: length=%\" PRIu64, msg_type_id, (uint64_t)length);\n    aeron_driver_conductor_log_error(conductor);\n\n    return AERON_RB_CONTINUE;\n}\n","sourceCodeStart":3182,"sourceCodeEnd":3218,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/c/aeron_driver_conductor.c#L3182-L3218","documentation":"The C media driver's conductor command dispatcher (aeron_driver_conductor_on_rb_command) received a message on the driver-to-client or client-to-driver broadcast/ring buffer whose msg_type_id does not match any known command. It records the error via AERON_SET_ERR with AERON_ERROR_CODE_UNKNOWN_COMMAND_TYPE_ID and logs it, then continues.","triggerScenarios":"A client library version sends a command type id the driver does not know (protocol version mismatch), or the ring buffer is corrupted/replayed at a wrong offset so an arbitrary integer is read as msg_type_id.","commonSituations":"Mixing a newer Aeron C/C++/Java client with an older C media driver binary; stale shared-memory files (/dev/shm) left by a previous run with a different protocol version; memory corruption from a rogue writer.","solutions":["Upgrade the media driver binary to match the client library version.","Delete stale shared-memory files (/dev/shm/aeron-*) and restart driver and clients together.","Ensure all processes use the same Aeron protocol version.","If persistent, check for out-of-bounds writes corrupting the command ring buffer."],"exampleFix":"# before: driver at v1.40, client at v1.45 -> unknown command\n$ aeron-media-driver &\n# after: versions aligned and stale buffers cleared\n$ rm -f /dev/shm/aeron-*\n$ aeron-media-driver-1.45 &\n$ my-aeron-client-1.45","handlingStrategy":"try-catch","validationCode":"if (aeron_version_get_semantic_version() ... /* compare driver & client versions before connect */) { fprintf(stderr, \"version mismatch: driver=%s client=%s\\n\", drvVer, cliVer); exit(1); }","typeGuard":"static bool is_known_command_type_id(int64_t type_id) { switch (type_id) { case AERON_COMMAND_...: return true; default: return false; } } // validate ids your client sends","tryCatchPattern":"if (aeron_errcode() == -AERON_ERROR_CODE_UNKNOWN_COMMAND_TYPE_ID) { fprintf(stderr, \"driver rejected command: %s\\n\", aeron_errmsg()); /* align versions, restart */ } else if (aeron_errcode() != 0) { fprintf(stderr, \"aeron error: %s\\n\", aeron_errmsg()); }","preventionTips":["Keep driver and all client libraries on the same Aeron release.","Clear /dev/shm/aeron-* stale files between version upgrades.","Watch the driver error log (aeron_driver_conductor_log_error output) at startup.","Pin versions in deployment tooling."],"tags":["c","aeron-driver","ipc","version-mismatch"],"backgroundTag":"unsupported-operation","analyzedSha":"6d60124e15e35c11b49ba2e3c2c2858a09a18803","analyzedAt":"2026-09-12T11:17:07.683Z","contentChangedAt":"2026-09-12T11:17:07.683Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}