aeron-io/aeron · error · IllegalArgumentException

unsupported congestion control : cc=

Error message

unsupported congestion control : cc=${ccStr}

What it means

DefaultCongestionControlSupplier.newInstance throws IllegalArgumentException when the requested congestion control strategy (cc parameter from the channel URI or configured class name) does not match any supported implementation.

Solutions

  1. Use one of the supported values: CongestionControl classes shipped with the driver (e.g. StaticWindowCongestionControl, CqrCongestionControl)
  2. Provide a custom CongestionControlSupplier that recognizes your strategy instead of relying on the default
  3. Check the exact fully-qualified class name including package

Example fix

// before
ctx.congestionControlStrategy("MyCc"); // unsupported -> IllegalArgumentException
// after
ctx.congestionControlStrategy(StaticWindowCongestionControl.class.getName());
Defensive patterns

Strategy: validation

Validate before calling

Set<String> supported = Set.of(StaticWindowCongestionControl.class.getName(), CqrCongestionControl.class.getName()); if (!supported.contains(ccStr)) throw new IllegalArgumentException("unsupported cc=" + ccStr);

Prevention

When it happens

Trigger: Setting context.congestionControlStrategy(...) or channel URI cc= parameter to a class name other than the supported CqrCongestionControl/StaticWindowCongestionControl implementations.

Common situations: Typo in the fully-qualified class name, using a congestion control from a different Aeron version or fork, or copy-pasting a cc= value that the default supplier does not know.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of aeron-io/aeron@6d60124e15 (2026-09-12). Data as JSON: /api/errors/ddb88656b5297956. Report an issue: GitHub.

Appendix: source

Thrown at aeron-driver/src/main/java/io/aeron/driver/DefaultCongestionControlSupplier.java:89

                countersManager);
        }
        else if (CubicCongestionControl.CC_PARAM_VALUE.equals(ccStr))
        {
            return new CubicCongestionControl(
                registrationId,
                udpChannel,
                streamId,
                sessionId,
                termLength,
                senderMtuLength,
                controlAddress,
                sourceAddress,
                nanoClock,
                context,
                countersManager);
        }

        throw new IllegalArgumentException("unsupported congestion control : cc=" + ccStr);
    }
}

View on GitHub (pinned to 6d60124e15)