{"record":{"id":"5cf6dbbbc434e2bc","repo":"aeron-io/aeron","slug":"invalid-simple-value","errorCode":null,"errorMessage":"Invalid simple value","messagePattern":"Invalid simple value","errorType":"validation","errorClass":"InvalidMessage","httpStatus":null,"severity":"error","filePath":"aeron-client/src/main/java/io/aeron/logging/CborDecode.java","lineNumber":176,"sourceCode":"        switch (additionalContent)\n        {\n            case ADDITIONAL_CONTENT_FALSE:\n            case ADDITIONAL_CONTENT_TRUE:\n                for (int i = 0, n = loggers.size(); i < n; i++)\n                {\n                    final LoggerEventCallback logger = loggers.get(i);\n                    logger.onValue(keyAsciiView, NO_TAG, additionalContent == ADDITIONAL_CONTENT_TRUE);\n                }\n                break;\n            case ADDITIONAL_CONTENT_NULL:\n                for (int i = 0, n = loggers.size(); i < n; i++)\n                {\n                    final LoggerEventCallback logger = loggers.get(i);\n                    logger.onValue(keyAsciiView, NO_TAG, (CharSequence)null);\n                }\n                break;\n            default:\n                throw new InvalidMessage(\"Invalid simple value\");\n        }\n    }\n\n    private void parseEntry(final DecodingState state)\n    {\n        if (state.isTerminated())\n        {\n            return;\n        }\n\n        final DirectBuffer buffer = state.buffer();\n\n        state.ensureRemaining(1);\n        final int keyTypeByte = (0xFF) & state.buffer().getByte(state.offset());\n        final int keyMajorType = majorType(keyTypeByte);\n        final int keyAdditionalContent = additionalContent(keyTypeByte);\n        state.incrementOffset(1);\n        // key handling","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-client/src/main/java/io/aeron/logging/CborDecode.java#L158-L194","documentation":"CborDecode.parseSimpleValue handles a small set of CBOR simple values (e.g. null, undefined) used by the logger; any other simple value falls through to the default branch and throws InvalidMessage('Invalid simple value'). The logger stream contains a CBOR simple value the decoder does not understand.","triggerScenarios":"Decoding a log produced by a different Aeron version whose logger emitted additional simple values (e.g. float16/float32 encoded as major type 7 with unknown additional content), or a corrupted stream byte in the 0xE0–0xF8 range.","commonSituations":"Version skew between the Aeron logger that wrote the recording and the decoder reading it, or bit-flip corruption in stored logs.","solutions":["Decode logs with the same Aeron version that produced them","Inspect the offending byte/offset and check for file corruption (compare against a known-good recording)","Extend/handle the simple value in the decoder if it is a legitimate new value, wrapping parse in InvalidMessage handling otherwise"],"exampleFix":"// before\ndefault:\n    throw new InvalidMessage(\"Invalid simple value\");\n// after\ncase ADDITIONAL_CONTENT_NULL:\n    // handle null like other callers expect\ncase ADDITIONAL_CONTENT_UNDEFINED:\n    break;\ndefault:\n    throw new InvalidMessage(\"Invalid simple value: 0x\" + Integer.toHexString(additionalContent));","handlingStrategy":"try-catch","validationCode":"// pre-check simple-value additional content in 0xE0-0xF8 simple range before parseSimpleValue is reached","typeGuard":null,"tryCatchPattern":"try { cborDecode.decode(logBuffer); } catch (final CborDecode.InvalidMessage ex) { if (\"Invalid simple value\".equals(ex.getMessage())) { /* version mismatch: re-decode with matching Aeron version */ } throw ex; }","preventionTips":["Decode with the exact Aeron version that wrote the log","Never hand-edit log bytes","Include byte/offset context in decoder error messages to speed triage"],"tags":["aeron","cbor","logging","deserialization"],"backgroundTag":"unexpected-response-shape","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"}