apache/cassandra · warning
Unable to propagate index status: {}
Error message
Unable to propagate index status: {} What it means
IndexStatusManager propagates local index build status (built/failed) to other nodes via Gossiper application state. Any exception thrown during propagation is caught and logged at WARN with this message, so a gossip failure never fails index management locally. It means other nodes may temporarily have a stale view of this node's index status.
Source
Thrown at src/java/org/apache/cassandra/index/IndexStatusManager.java:262
// Versions 5.0.0 through 5.0.2 use a much more bloated format that duplicates keyspace names
// and writes full status names instead of their numeric codes. If the minimum cluster version is
// unknown or one of those 3 versions, continue to propagate the old format.
CassandraVersion minVersion = ClusterMetadata.current().directory.clusterMinVersion.cassandraVersion;
String newSerializedStatusMap = shouldWriteLegacyStatusFormat(minVersion) ? JsonUtils.writeAsJsonString(statusMap)
: toSerializedFormat(statusMap);
statusPropagationExecutor.submit(() -> {
// schedule gossiper update asynchronously to avoid potential deadlock when another thread is holding
// gossiper taskLock.
VersionedValue value = StorageService.instance.valueFactory.indexStatus(newSerializedStatusMap);
Gossiper.instance.addLocalApplicationState(ApplicationState.INDEX_STATUS, value);
});
}
}
catch (Exception e)
{
logger.warn("Unable to propagate index status: {}", e.getMessage());
}
}
private static boolean shouldWriteLegacyStatusFormat(CassandraVersion minVersion)
{
if (DatabaseDescriptor.getForceOptimizedIndexStatusFormat())
return false;
return minVersion == null || (minVersion.major == 5 && minVersion.minor == 0 && minVersion.patch < 3);
}
/**
* Serializes as a JSON string the status of the indexes in the provided map.
* <p>
* For example, the map...
* <pre>
* {
* ks1.cf1_idx1=FULL_REBUILD_STARTED,View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Read the logged e.getMessage() to identify the underlying exception; it is swallowed here, so full stack traces need debug logging on IndexStatusManager.
- Retry after gossip converges — status is re-propagated periodically and on subsequent index events.
- During rolling upgrades, ensure all nodes can parse the legacy index status format or set force_optimized_index_status_format appropriately.
- If persistent at startup, check that Gossiper has an endpoint for peers (verify seed configuration and connectivity).
Defensive patterns
Strategy: fallback
Try / catch
try { IndexStatusManager.instance.propagateLocalIndexStatus(); } catch (Exception e) { logger.warn("propagation deferred; status will be re-sent on next gossip cycle"); } Prevention
- Delay index creation until the node has joined gossip (nodetool status shows node UP).
- Keep cluster versions homogeneous or verify legacy index status support during rolling upgrades.
- Monitor gossip convergence at startup before heavy index operations.
When it happens
Trigger: Calling propagateLocalIndexStatus when Gossiper is not yet fully started, during shutdown, or when serializing the INDEX_STATUS application-state value fails (e.g. legacy vs optimized format handling throwing while computing the value for a peer's version).
Common situations: Node starting up and building indexes before gossip settles; rolling upgrades where mixed versions force legacy status format; gossip storm or endpoint changes concurrent with an index build finishing.
Understand the failure class
Background: "invalid response format", "malformed payload", "missing data field": when an API returns 200 but the response shape is wrong — this error's family across 23 libraries.
Related errors
- Invalid index specified: %s/%s.
- Index build of {} failed. Please run full index rebuild to f
- Unknown broadcast_address '
- broadcast_address cannot be a wildcard address (
- Cannot use transient replication on keyspaces using secondar
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/e183eedd31edaa9f.
Report an issue: GitHub.