hyperledger/fabric · error

no endpoints currently defined

Error message

no endpoints currently defined

What it means

Returned by ConnectionSource.RandomEndpoint when the endpoint list is empty — no orderer endpoints are known (nothing from overrides, org mappings, or static config). A random-endpoint pick is impossible, so the caller learns delivery cannot proceed.

Source

Thrown at common/deliverclient/orderers/connection.go:74

	Addresses []string
	RootCerts [][]byte
}

func NewConnectionSource(logger *flogging.FabricLogger, overrides map[string]*Endpoint, selfEndpoint string) *ConnectionSource {
	return &ConnectionSource{
		orgToEndpointsHash: map[string][]byte{},
		logger:             logger,
		overrides:          overrides,
		selfEndpoint:       selfEndpoint,
	}
}

// RandomEndpoint returns a random endpoint.
func (cs *ConnectionSource) RandomEndpoint() (*Endpoint, error) {
	cs.mutex.RLock()
	defer cs.mutex.RUnlock()
	if len(cs.allEndpoints) == 0 {
		return nil, errors.Errorf("no endpoints currently defined")
	}
	return cs.allEndpoints[rand.IntN(len(cs.allEndpoints))], nil
}

func (cs *ConnectionSource) Endpoints() []*Endpoint {
	cs.mutex.RLock()
	defer cs.mutex.RUnlock()

	return cs.allEndpoints
}

// ShuffledEndpoints returns a shuffled array of endpoints in a new slice.
func (cs *ConnectionSource) ShuffledEndpoints() []*Endpoint {
	cs.mutex.RLock()
	defer cs.mutex.RUnlock()

	n := len(cs.allEndpoints)
	returnedSlice := make([]*Endpoint, n)

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Verify orderer endpoints are configured (bootstrap or channel config) for the org
  2. Wait for endpoint discovery/gossip to populate the list, then retry
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at common/deliverclient/orderers/connection.go:74 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/059dba47a54e5aae. Report an issue: GitHub.