aeron-io/aeron · error · ConfigurationException

cpuset warnings as errors

Error message

cpuset warnings as errors, %d warnings

What it means

Aeron's CGroupValidator can be configured to treat cpuset validation warnings as fatal. When validate() accumulates one or more warnings from the registered cpuset validators and the warningsAsErrors flag is set, it throws this ConfigurationException with the total warning count. It exists so environments that require strict topology correctness fail fast instead of proceeding with a suspect cpuset.

Solutions

  1. Fix the underlying cpuset configuration so no warnings are reported (align CPU affinity with cpuset.cpus / cpuset.cpus.effective).
  2. Disable the warnings-as-errors option in Aeron configuration if warnings are acceptable in your environment.
  3. Inspect the validator output buffer (out) from the prior validate call to see which specific cpuset warnings were counted.
  4. Verify cgroup mount and version (v1 vs v2) on the host; in containers ensure the CPU limit matches the reserved CPU set.

Example fix

// before
CGroupValidator.validate(cpuset, out, true); // warningsAsErrors=true, host has mismatched cpuset
// after
// fix the host cpuset or relax validation
CGroupValidator.validate(cpuset, out, false);
Defensive patterns

Strategy: validation

Validate before calling

if (cgroupValidationWarnsAsErrors && !cpusetIsClean) { failFast("fix cpuset or disable warnings-as-errors"); }

Try / catch

try {
    CGroupValidator.validate(cpuset, out, warningsAsErrors);
} catch (ConfigurationException e) {
    log.warn("cpuset validation failed: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Calling CGroupValidator.validate() (directly or via validate) after enabling warningsAsErrors (e.g. aeron.dir.warn.if.cpuset.mismatch-as-error style configuration) while at least one cpuset validator reports a warning.

Common situations: Running Aeron on hosts where cgroup cpuset does not match the CPUs Aeron expects (container CPU limits, cgroup v1 vs v2 differences, pinned cores missing from cpuset.cpus.effective) with strict validation enabled.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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

Appendix: source

Thrown at aeron-client/src/main/java/io/aeron/topology/CGroupValidator.java:94

        validate(cpusetV2Reader.readCpuSet(), warningsAsErrors, System.err);
    }

    void validate(final Cpuset cpuset, final boolean warningsAsErrors, final PrintStream out)
    {
        if (cpuset.cpus().size() < 2)
        {
            return;
        }

        int warnings = 0;
        for (final TopologyValidator validator : topologyValidators)
        {
            warnings += validator.validate(cpuset, out);
        }

        if (warningsAsErrors && 0 < warnings)
        {
            throw new ConfigurationException("cpuset warnings as errors, %d warnings".formatted(warnings));
        }
    }
}

View on GitHub (pinned to 6d60124e15)