hyperledger/fabric · error
some orderer organizations endpoints are empty: %s
Error message
some orderer organizations endpoints are empty: %s
What it means
When building the OrdererConfig, Fabric checks that every organization in the Orderer group defines at least one endpoint. validateAllOrgsHaveEndpoints collects orgs with empty Endpoints() and fails the whole config if any exist. This guarantees the ordering service membership has reachable endpoints.
Source
Thrown at common/channelconfig/orderer.go:252
return fmt.Errorf("Attempted to set the batch timeout to a invalid value: %s", err)
}
if oc.batchTimeout <= 0 {
return fmt.Errorf("Attempted to set the batch timeout to a non-positive value: %s", oc.batchTimeout)
}
return nil
}
func (oc *OrdererConfig) validateAllOrgsHaveEndpoints() error {
var orgsMissingEndpoints []string
for _, org := range oc.Organizations() {
if len(org.Endpoints()) == 0 {
orgsMissingEndpoints = append(orgsMissingEndpoints, org.Name())
}
}
if len(orgsMissingEndpoints) > 0 {
return errors.Errorf("some orderer organizations endpoints are empty: %s", orgsMissingEndpoints)
}
return nil
}
// This does just a barebones sanity check.
func brokerEntrySeemsValid(broker string) bool {
if !strings.Contains(broker, ":") {
return false
}
parts := strings.Split(broker, ":")
if len(parts) > 2 {
return false
}
host := parts[0]
port := parts[1]View on GitHub (pinned to 2736b63f8f)
Solutions
- Add Orderer.Endpoints entries (host:port of its ordering nodes) for every org listed in the error
- Alternatively remove the org from the Orderer group if it should not be part of the ordering service
- Regenerate the config update and revalidate
Example fix
# before (configtx.yaml)
Orderer:
Organizations:
- &OrdererOrg
Name: OrdererOrg
# no Endpoints defined
# after
Orderer:
Organizations:
- &OrdererOrg
Name: OrdererOrg
Endpoints:
- orderer.example.com:7050 Defensive patterns
Strategy: validation
Validate before calling
for _, org := range cfg.Orderer.Organizations {
if len(org.OrdererEndpoints) == 0 {
return fmt.Errorf("orderer org %q has no Endpoints", org.Name)
}
} Try / catch
_, err := channelconfig.NewOrdererConfig(ordererGroup, cryptoProvider)
if err != nil && strings.Contains(err.Error(), "endpoints are empty") {
return fmt.Errorf("add Orderer.Endpoints for the listed orgs: %w", err)
} Prevention
- Whenever adding an org to the Orderer group, add its Endpoints list in the same change
- Keep org definitions complete (Name, ID, MSPDir, Endpoints) using a shared template
- Run configtxgen validation in CI to catch missing endpoints before channel creation
When it happens
Trigger: Creating/updating a channel whose Orderer group contains an org with no Orderer.Endpoints (no hosts defined) — typically after adding an org to the orderer group without endpoint entries, or removing all endpoints from an existing orderer org.
Common situations: Adding a new ordering org to a consortium/orderer group in a config update but forgetting its TLS/endpoint addresses; upgrading configs from older Fabric versions where endpoints lived in the service addresses of the legacy OrdererAddresses; generated configs where an org is referenced but not fully populated.
Related errors
- no orderer config in bundle
- cannot enable channel capabilities without orderer support f
- Must set some OrdererAddresses
- OrdererOrg config does not allow sub-groups
- Attempted to set the batch size preferred max bytes (%v) gre
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/7787ffa2a8a8bdcd.
Report an issue: GitHub.