{"record":{"id":"5a7d2ceed4638ca2","repo":"aeron-io/aeron","slug":"no-recording-found-with-recordingid-recordingid","errorCode":null,"errorMessage":"no recording found with recordingId: \" + recordingId","messagePattern":"no recording found with recordingId: \" \\+ recordingId","errorType":"exception","errorClass":"AeronException","httpStatus":null,"severity":"error","filePath":"aeron-archive/src/main/java/io/aeron/archive/ArchiveTool.java","lineNumber":479,"sourceCode":"     * @param recordingId to identify the entry.\n     */\n    public static void describeRecording(final PrintStream out, final File archiveDir, final long recordingId)\n    {\n        try (Catalog catalog = openCatalogReadWrite(archiveDir, INSTANCE, MIN_CAPACITY, null, null))\n        {\n            final MutableBoolean found = new MutableBoolean(false);\n            catalog.forEach((recordingDescriptorOffset, headerEnc, headerDec, encoder, decoder) ->\n            {\n                if (decoder.recordingId() == recordingId)\n                {\n                    found.set(true);\n                    out.println(decoder);\n                }\n            });\n\n            if (!found.get())\n            {\n                throw new AeronException(\"no recording found with recordingId: \" + recordingId);\n            }\n        }\n    }\n\n    /**\n     * Count of the number of entries in the {@link Catalog}.\n     *\n     * @param archiveDir containing the {@link Catalog}.\n     * @return the number of entries in the {@link Catalog}.\n     */\n    public static int entryCount(final File archiveDir)\n    {\n        try (Catalog catalog = openCatalogReadOnly(archiveDir, INSTANCE))\n        {\n            return catalog.entryCount();\n        }\n    }\n","sourceCodeStart":461,"sourceCodeEnd":497,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-archive/src/main/java/io/aeron/archive/ArchiveTool.java#L461-L497","documentation":"ArchiveTool.describeRecording scans the Catalog for the given recordingId and throws AeronException when no catalog entry with that id is found. It indicates the requested recording does not exist in the archive directory being inspected. A developer hit this by passing a recordingId not present in the catalog.","triggerScenarios":"Running ArchiveTool describeRecording <archiveDir> <recordingId> with a recordingId that has no entry in the archive's Catalog (typo, wrong archive dir, recording deleted/compacted away).","commonSituations":"Typo in recordingId; pointing the tool at the wrong archive directory; the recording was removed by catalog compaction or recording deletion; querying an id from a different cluster's archive.","solutions":["List existing recordings with ArchiveTool describeRecording on the correct archive dir or use the catalog entries to find valid recordingIds.","Verify you are pointing at the correct archive directory that actually contains the recording.","Re-check the recordingId value (it may have been removed or belong to another archive)."],"exampleFix":"// before\nArchiveTool.describeRecording(out, archiveDir, 12345L); // id not in catalog -> throws\n// after\n// find the correct id first (e.g. from the publishing stream or catalog listing), then:\nArchiveTool.describeRecording(out, archiveDir, correctRecordingId);","handlingStrategy":"validation","validationCode":"boolean exists = catalogContainsRecording(archiveDir, recordingId); // scan catalog entries first\nif (!exists) {\n    throw new IllegalArgumentException(\"recordingId \" + recordingId + \" not in catalog at \" + archiveDir);\n}","typeGuard":null,"tryCatchPattern":"try {\n    ArchiveTool.describeRecording(out, archiveDir, recordingId);\n} catch (AeronException e) {\n    if (e.getMessage().startsWith(\"no recording found\")) {\n        // handle missing recording: list available ids or abort cleanly\n    } else throw e;\n}","preventionTips":["Persist recordingIds from the publishing application rather than retyping them.","Confirm the archive directory path before running ArchiveTool commands.","Remember compact/delete operations remove catalog entries; check ids after maintenance.","Keep one archive directory per cluster to avoid cross-referencing ids."],"tags":["aeron","archive","tool","not-found"],"backgroundTag":"record-not-found","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"}