apache/cassandra · warning
Failed to send dictionary update notification to
Error message
Failed to send dictionary update notification to {} What it means
When a new dictionary is trained, the manager notifies peer nodes over the internode messaging so they can pull it. If the send future reports failure, the handler logs this warning with the cause. The training itself succeeded; only peer notification failed, so peers may learn the dictionary later via the periodic scheduler instead.
Solutions
- Check the target node's status (nodetool status) and restart/rejoin it if down.
- Verify internode connectivity and logs on the target for the transport failure shown in future.cause().
- Rely on the periodic dictionary refresh scheduler to eventually pull the dictionary; monitor that the peer converges.
- If persistent, inspect network/firewall between nodes and rerun the training/notify cycle.
Defensive patterns
Strategy: retry
Try / catch
// message send already non-blocking; treat failure as transient
future.addListener(f -> { if (!f.isSuccess()) logAndSchedulePeerRefresh(f.cause()); }); Prevention
- Ensure all peers are UP before triggering dictionary training.
- Monitor internode connectivity; rely on periodic refresh as the fallback path.
When it happens
Trigger: sendNotification (called from onNewDictionaryTrained) sends a dictionary-update message to a target and future.isSuccess() is false — unreachable peer, dropped message, or connection failure.
Common situations: A target node down or restarting during training; internode network issues/firewalls; cluster membership changes mid-notification.
Related errors
- Failed to refresh compression dictionary for
- Failed to retrieve compression dictionary for
- Provided dictionary can not be consumed by table's…
- Received dictionary update for unknown table with tableId
- Access forbidden
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/fcdca776c44f913c.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/db/compression/CompressionDictionaryEventHandler.java:117
}
// Best effort to notify the peer regarding the new dictionary being available to pull.
// If the request fails, each peer has periodic task scheduled to pull.
private void sendNotification(InetAddressAndPort target, CompressionDictionaryUpdateMessage message)
{
logger.debug("Sending dictionary update notification for {} to {}", message.dictionaryId, target);
Message<CompressionDictionaryUpdateMessage> msg = Message.out(Verb.DICTIONARY_UPDATE_REQ, message);
MessagingService.instance()
.sendWithResponse(target, msg)
.addListener(future -> {
if (future.isSuccess())
{
logger.debug("Successfully sent dictionary update notification to {}", target);
}
else
{
logger.warn("Failed to send dictionary update notification to {}",
target, future.cause());
}
});
}
}
View on GitHub (pinned to 88fd0f6a0e)