apache/cassandra · error · RepairException
Sync failed between and
Error message
Sync failed between %s and %s
What it means
An asymmetric remote sync task (used in preview/ir-synchronous repairs where streaming is one-directional) failed between the coordinator node and its peer. The task is failed with a RepairException carrying this message, which aborts the surrounding repair session.
Solutions
- Check the peer node's logs for the underlying streaming/stream-plan failure.
- Re-run the repair once both nodes are healthy.
- Verify disk space, permissions, and network connectivity between nodePair.coordinator and nodePair.peer.
- Increase repair session/streaming timeouts if the data volume is large.
- Use nodetool netstats and check for failed streams to pinpoint the failure.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check before repair: // nodetool status (all nodes UP/UN) // nodetool netstats (no failed/stuck streams) // df -h on both endpoints (sufficient disk)
Try / catch
try {
repairAsync(keyspace);
} catch (RuntimeException e) {
if (e.getMessage().contains("Sync failed between")) {
// check peer health/logs, then retry repair
}
} Prevention
- Verify node health before scheduling repairs.
- Ensure ample disk space on all replicas.
- Fix streaming timeouts for large datasets.
- Automate repair retries after transient stream failures.
When it happens
Trigger: syncComplete is invoked with success=false after the remote sync/streaming request to nodePair.peer completed unsuccessfully (remote node error, stream failure, timeout).
Common situations: Node down or restarting mid-repair, streaming failures due to disk space or permissions, network partitions, or timeouts while transferring stream summaries between replicas.
Related errors
- Sync failed between and
- A repair_session_space of
- A repair_session_space of
- An incremental repair with session id
- Can't join the ring because bootstrap hasn't completed.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/a84a4a5956a3e7d0.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/repair/AsymmetricRemoteSyncTask.java:62
public void startSync()
{
InetAddressAndPort local = ctx.broadcastAddressAndPort();
SyncRequest request = new SyncRequest(desc, local, nodePair.coordinator, nodePair.peer, rangesToSync, previewKind, true);
String message = String.format("Forwarding streaming repair of %d ranges to %s (to be streamed with %s)", request.ranges.size(), request.src, request.dst);
Tracing.traceRepair(message);
sendRequest(request, request.src);
}
public void syncComplete(boolean success, List<SessionSummary> summaries)
{
if (success)
{
trySuccess(stat.withSummaries(summaries));
}
else
{
tryFailure(RepairException.warn(desc, previewKind, String.format("Sync failed between %s and %s", nodePair.coordinator, nodePair.peer)));
}
}
@Override
public String toString()
{
return "AsymmetricRemoteSyncTask{" +
"rangesToSync=" + rangesToSync +
", nodePair=" + nodePair +
'}';
}
}
View on GitHub (pinned to 88fd0f6a0e)