{"record":{"id":"96809fbbe24e51c8","repo":"aeron-io/aeron","slug":"untetheredlingertimeoutns-untetheredlingertimeoutns","errorCode":null,"errorMessage":"untetheredLingerTimeoutNs=${untetheredLingerTimeoutNs} <= timerIntervalNs=${timerIntervalNs}","messagePattern":"untetheredLingerTimeoutNs=(.+?) <= timerIntervalNs=(.+?)","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/java/io/aeron/driver/Configuration.java","lineNumber":2642,"sourceCode":"        final long timerIntervalNs)\n    {\n        if (untetheredWindowLimitTimeoutNs <= timerIntervalNs)\n        {\n            throw new ConfigurationException(\n                \"untetheredWindowLimitTimeoutNs=\" + untetheredWindowLimitTimeoutNs +\n                \" <= timerIntervalNs=\" + timerIntervalNs);\n        }\n\n        if (untetheredRestingTimeoutNs <= timerIntervalNs)\n        {\n            throw new ConfigurationException(\n                \"untetheredRestingTimeoutNs=\" + untetheredRestingTimeoutNs +\n                \" <= timerIntervalNs=\" + timerIntervalNs);\n        }\n\n        if (Aeron.NULL_VALUE != untetheredLingerTimeoutNs && untetheredLingerTimeoutNs <= timerIntervalNs)\n        {\n            throw new ConfigurationException(\n                \"untetheredLingerTimeoutNs=\" + untetheredLingerTimeoutNs +\n                    \" <= timerIntervalNs=\" + timerIntervalNs);\n        }\n    }\n\n    /**\n     * Create a source identity for a given source address.\n     *\n     * @param srcAddress to be used for the identity.\n     * @return a source identity string for a given address.\n     */\n    public static String sourceIdentity(final InetSocketAddress srcAddress)\n    {\n        return srcAddress.getHostString() + ':' + srcAddress.getPort();\n    }\n\n    static void validateValueRange(final long value, final long minValue, final long maxValue, final String name)\n    {","sourceCodeStart":2624,"sourceCodeEnd":2660,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/java/io/aeron/driver/Configuration.java#L2624-L2660","documentation":"Aeron driver configuration validation: the untethered linger timeout must be strictly greater than the driver timer interval, otherwise the timeout can never be observed by the timer wheel. The driver throws ConfigurationException during configuration validation (when the value is set and not NULL_VALUE).","triggerScenarios":"Setting Aeron context untetheredLingerTimeout (e.g. context.untetheredLingerTimeoutNs(...)) to a positive value that is less than or equal to the configured timerIntervalNs (default 1 second). Also triggered by system property aeron.driver.untethered.linger.timeout set too low.","commonSituations":"Developers tune untethered subscription behavior for low-latency or short-lived connections and set a sub-second linger timeout without realizing the driver timer only fires every timerIntervalNs (default 1s).","solutions":["Increase untetheredLingerTimeoutNs to be strictly greater than timerIntervalNs (e.g. >= 2x the timer interval)","Or leave untetheredLingerTimeoutNs as Aeron.NULL_VALUE to use the default and keep the timer interval unchanged","Reduce timerIntervalNs if a sub-second linger timeout is truly required, keeping linger > interval"],"exampleFix":"// before\nctx.untetheredLingerTimeoutNs(500_000_000); // 0.5s <= default 1s timer interval -> throws\n// after\nctx.untetheredLingerTimeoutNs(2_000_000_000); // 2s > 1s timer interval","handlingStrategy":"validation","validationCode":"if (untetheredLingerTimeoutNs != Aeron.NULL_VALUE && untetheredLingerTimeoutNs <= ctx.timerIntervalNs()) { throw new IllegalArgumentException(\"untetheredLingerTimeoutNs must be > timerIntervalNs\"); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep untethered timeouts at least 2x timerIntervalNs","Check Configuration constants for minimums before tuning","Test driver configuration in a unit test that calls context.conclude() early"],"tags":["configuration","validation","timeout","aeron-driver"],"backgroundTag":"invalid-config-value","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"}