apache/cassandra · error · RuntimeException

Unable to serialize minimum_client_driver_versions_warned…

Error message

Unable to serialize minimum_client_driver_versions_warned configuration: 

What it means

Serializing DEFAULT_CONFIG.getMinimumClientDriverVersionsWarned() to JSON failed; the RuntimeException message appends the original Throwable's getMessage(), unlike the password/role policy variants. This indicates an internal problem converting the default minimum-client-driver-versions map to JSON.

Solutions

  1. Check the appended cause text ('...: ' + t.getMessage()) in the exception or logs and fix the underlying Jackson issue
  2. Verify jackson-databind/core/annotations versions match what Cassandra expects (no conflicting jars on the classpath)
  3. Rebuild/redeploy from an unmodified Cassandra distribution to restore a sane DEFAULT_CONFIG
  4. Report upstream if it reproduces on a clean install, since the value is a built-in default

Example fix

// before
classpath contains jackson-databind 2.9 (incompatible)
// after
Remove the stale jar; use the Jackson versions shipped with the Cassandra distribution (lib/)
Defensive patterns

Strategy: try-catch

Validate before calling

// Sanity check on a clean node before relying on the getter
String json = guardrails.getMinimumClientDriverVersionsWarned();
if (json == null || !json.startsWith("{")) logger.error("Unexpected serialization output");

Try / catch

try {
    String json = guardrails.getMinimumClientDriverVersionsWarned();
} catch (RuntimeException e) {
    logger.error("Failed to serialize minimum_client_driver_versions_warned: {}", e.getMessage());
    // likely a Jackson classpath issue; fix deps and restart
}

Prevention

When it happens

Trigger: Calling getMinimumClientDriverVersionsWarned() when Jackson cannot serialize the default versions structure — usually an internal/classpath anomaly rather than user input, since the value is a built-in default.

Common situations: A shaded-jar or dependency conflict replacing JSON_OBJECT_MAPPER with an incompatible Jackson; a build with a corrupted DEFAULT_CONFIG; custom patches altering the versions map type.

Understand the failure class

Background: "JSON serialization failed", "not JSON serializable", "Failed to serialize": why JSON marshaling errors happen and how to fix them — this error's family across 46 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/6a071834b8608bb0. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/db/guardrails/Guardrails.java:1930

        DEFAULT_CONFIG.setUnsetTrainingMinFrequencyEnabled(value);
    }

    @Override
    public boolean getUnsetTrainingMinFrequencyEnabled()
    {
        return DEFAULT_CONFIG.getUnsetTrainingMinFrequencyEnabled();
    }

    @Override
    public String getMinimumClientDriverVersionsWarned()
    {
        try
        {
            return JsonUtils.JSON_OBJECT_MAPPER.writeValueAsString(DEFAULT_CONFIG.getMinimumClientDriverVersionsWarned());
        }
        catch (Throwable t)
        {
            throw new RuntimeException("Unable to serialize minimum_client_driver_versions_warned configuration: " + t.getMessage());
        }
    }

    @Override
    public String getMinimumClientDriverVersionsDisallowed()
    {
        try
        {
            return JsonUtils.JSON_OBJECT_MAPPER.writeValueAsString(DEFAULT_CONFIG.getMinimumClientDriverVersionsDisallowed());
        }
        catch (Throwable t)
        {
            throw new RuntimeException("Unable to serialize minimum_client_driver_versions_disallowed configuration: " + t.getMessage());
        }
    }

    @Override
    public void setMinimumClientDriverVersionsWarned(String value)

View on GitHub (pinned to 88fd0f6a0e)