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
- Use one of the supported values: CongestionControl classes shipped with the driver (e.g. StaticWindowCongestionControl, CqrCongestionControl)
- Provide a custom CongestionControlSupplier that recognizes your strategy instead of relying on the default
- 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
- Only use fully-qualified names of CongestionControl classes shipped with your Aeron version
- Re-check config after upgrading Aeron
- Supply a custom supplier for experimental strategies
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
- invalid port value
- :low port value must be lower than high port value
- mtuLength= <= HEADER_LENGTH=
- mtuLength= > initialWindowLength=
- mtuLength= > MAX_UDP_PAYLOAD_LENGTH=
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)