{"record":{"id":"c31e740d95b58d9c","repo":"aeron-io/aeron","slug":"image-correlationid-responsecorrelationid-not-found","errorCode":null,"errorMessage":"image.correlationId={responseCorrelationId} not found","messagePattern":"image\\.correlationId=(.+?) not found","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/java/io/aeron/driver/DriverConductor.java","lineNumber":2794,"sourceCode":"\n            for (final PublicationImage publicationImage : publicationImages)\n            {\n                if (publicationImage.correlationId() == params.responseCorrelationId)\n                {\n                    if (publicationImage.hasSendResponseSetup())\n                    {\n                        return publicationImage;\n                    }\n                    else\n                    {\n                        throw new IllegalArgumentException(\n                            \"image.correlationId=\" + params.responseCorrelationId +\n                                \" did not request a response channel\");\n                    }\n                }\n            }\n\n            throw new IllegalArgumentException(\"image.correlationId=\" + params.responseCorrelationId + \" not found\");\n        }\n\n        private enum State\n        {\n            INIT,\n            PARSE_CHANNEL,\n            VALIDATE,\n            RESOLVE_PUBLICATION,\n            AWAIT_LOG_BUFFER,\n            CREATE_PUBLICATION,\n            DONE\n        }\n    }\n\n    private final class AddIpcPublicationCommand extends ClientCommand\n    {\n        private final String channel;\n        private final int streamId;","sourceCodeStart":2776,"sourceCodeEnd":2812,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/java/io/aeron/driver/DriverConductor.java#L2776-L2812","documentation":"Thrown when a client requests an image by responseCorrelationId (response-channel / image correlation) but no existing subscription or image matches that correlationId. The driver looked through its records and found no subscriber that had requested a response channel corresponding to the given correlationId, so it cannot service the request.","triggerScenarios":"Calling Aeron APIs that resolve an image by response correlationId (e.g. adding a destination/response channel referencing image.correlationId=...) with a correlationId that was never registered by a prior subscription in this driver instance, or one whose image/subscription has since been closed.","commonSituations":"Stale or copied correlationIds from a previous driver session; the subscribing publication/image was closed before the response-channel request arrived; typo or mismatch between the correlationId printed in logs and the live one; restarting the driver (all correlationIds are ephemeral).","solutions":["Verify the correlationId matches a currently active image in this driver (check via aeron-stat or the driver's counting counters) before issuing the request.","Re-fetch the correlationId from the live publication/publicationParams response after driver restart — ids are not persistent.","Ensure ordering: the subscription that requests the response channel must be created before the correlated request.","Catch IllegalArgumentException in the client and re-create the subscription/image pair from scratch."],"exampleFix":"// before\nclient.addSubscription(\"aeron:udp?endpoint=127.0.0.1:40456|cc=cubic\", streamId) // uses stale image.correlationId=42 from old session\n// after\nlong imageCorrelationId = liveImage.correlationId(); // re-read from the active Aeron instance\nString channel = \"aeron:udp?endpoint=127.0.0.1:40456|image.correlationId=\" + imageCorrelationId;","handlingStrategy":"try-catch","validationCode":"if (imageCorrelationId <= 0 || !activeImages.contains(imageCorrelationId)) { throw new IllegalStateException(\"correlationId not active: \" + imageCorrelationId); }","typeGuard":null,"tryCatchPattern":"try {\n    addResponseChannelSubscription(imageCorrelationId);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"image.correlationId=\" + imageCorrelationId)) {\n        refreshImageCorrelationIdAndRetry();\n    } else { throw e; }\n}","preventionTips":["Always source correlationIds from the live Aeron instance, never from persisted state","Re-read ids after any driver restart","Ensure the requesting subscription exists before correlated requests"],"tags":["aeron","driver","subscription","correlation-id"],"backgroundTag":"resource-not-found","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"}