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
- Check the appended cause text ('...: ' + t.getMessage()) in the exception or logs and fix the underlying Jackson issue
- Verify jackson-databind/core/annotations versions match what Cassandra expects (no conflicting jars on the classpath)
- Rebuild/redeploy from an unmodified Cassandra distribution to restore a sane DEFAULT_CONFIG
- 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
- Ship only the Jackson versions bundled with the Cassandra distribution
- Avoid fat jars that shade conflicting Jackson versions into the server classpath
- Since this reads a built-in default, treat reproducible failures as a build/deploy bug and report upstream
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
- Unable to serialize…
- Unable to serialize password_policy configuration
- Unable to serialize role_name_policy configuration
- Batch too large
- Cannot alter gc_grace_seconds of a materialized view to 0…
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)