{"record":{"id":"9cbf54a201790d7a","repo":"aeron-io/aeron","slug":"mediadriver-aerondirectoryname-has-been-shutdown","errorCode":null,"errorMessage":"MediaDriver (<aeronDirectoryName>) has been shutdown","messagePattern":"MediaDriver \\(<aeronDirectoryName>\\) has been shutdown","errorType":"exception","errorClass":"DriverTimeoutException","httpStatus":null,"severity":"error","filePath":"aeron-client/src/main/java/io/aeron/ClientConductor.java","lineNumber":1893,"sourceCode":"private int checkLiveness(final long nowNs)\n{\n    if ((timeOfLastKeepAliveNs + keepAliveIntervalNs) - nowNs < 0)\n    {\n        final long nowMs = epochClock.time();\n        final long lastKeepAliveMs = driverProxy.timeOfLastDriverKeepaliveMs();\n\n        if (nowMs > (lastKeepAliveMs + driverTimeoutMs))\n        {\n            terminateConductor();\n\n            if (Aeron.NULL_VALUE == lastKeepAliveMs)\n            {\n                throw new DriverTimeoutException(\n                    \"MediaDriver (\" + aeron.context().aeronDirectoryName() + \") has been shutdown\");\n            }\n\n            throw new DriverTimeoutException(\n                \"MediaDriver (\" + aeron.context().aeronDirectoryName() + \") keepalive: age=\" +\n                    (nowMs - lastKeepAliveMs) + \"ms > timeout=\" + driverTimeoutMs + \"ms\");\n        }\n\n        return 0;\n    }\n\n    return 0;\n}","sourceCodeStart":1875,"sourceCodeEnd":1911,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-client/src/main/java/io/aeron/ClientConductor.java#L1875-L1911","documentation":"Thrown by the client conductor's liveness check during its periodic duty cycle. The conductor keeps track of the Media Driver's last keepalive timestamp; when the driver's keepalive age exceeds driverTimeoutMs the conductor terminates itself. If the recorded keepalive value is Aeron.NULL_VALUE, it means the driver never wrote a keepalive at all, i.e. the Media Driver identified by <aeronDirectoryName> has been shut down (its CnC file no longer being maintained), so the client raises DriverTimeoutException to end the client's conductor thread.","triggerScenarios":"Thrown at aeron-client/src/main/java/io/aeron/ClientConductor.java:1893 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Restart the Media Driver so the client can reconnect to the same aeronDirectoryName","Verify the driver process was not stopped or crashed; check driver logs for shutdown reason","Use a DriverListener/Aeron context to detect driver death and recreate Aeron client and publications after driver restart","Ensure the client's aeronDirectoryName points at the directory of a running driver, not a stale directory"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}