hyperledger/fabric · error
no cluster members to synchronize with
Error message
no cluster members to synchronize with
What it means
BFTSynchronizer guard: after querying all remote endpoints for their ledger heights and removing its own endpoint, no other cluster members were reachable/known. A smartbft node cannot synchronize (or decide a target height) without at least one live peer in the channel.
Source
Thrown at orderer/consensus/smartbft/synchronizer_bft.go:153
return 0, "", errors.Wrap(err, "cannot get create BlockPuller")
}
defer blockPuller.Close()
heightByEndpoint, myEndpoint, err := blockPuller.HeightsByEndpoints()
if err != nil {
return 0, "", errors.Wrap(err, "cannot get HeightsByEndpoints")
}
s.Logger.Infof("HeightsByEndpoints: %+v, my endpoint: %s", heightByEndpoint, myEndpoint)
delete(heightByEndpoint, myEndpoint)
var heights []uint64
for _, value := range heightByEndpoint {
heights = append(heights, value)
}
if len(heights) == 0 {
return 0, "", errors.New("no cluster members to synchronize with")
}
targetHeight := s.computeTargetHeight(heights)
s.Logger.Infof("Detected target height: %d", targetHeight)
return targetHeight, myEndpoint, nil
}
// computeTargetHeight compute the target height to synchronize to.
//
// heights: a slice containing the heights of accessible peers, length must be >0.
// clusterSize: the cluster size, must be >0.
func (s *BFTSynchronizer) computeTargetHeight(heights []uint64) uint64 {
sort.Slice(heights, func(i, j int) bool { return heights[i] > heights[j] }) // Descending
clusterSize := len(s.Support.SharedConfig().Consenters())
f := uint64(clusterSize-1) / 3 // The number of tolerated byzantine faults
lenH := uint64(len(heights))
s.Logger.Debugf("Cluster size: %d, F: %d, Heights: %v", clusterSize, f, heights)View on GitHub (pinned to 2736b63f8f)
Solutions
- Check network connectivity and cluster TLS to the other consenters
- Verify the other orderers in the channel are running
- Retry once the cluster recovers
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at orderer/consensus/smartbft/synchronizer_bft.go:153 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/831555d3320074b4.
Report an issue: GitHub.