hyperledger/fabric · error

missing address parameter

Error message

missing address parameter

What it means

NewGRPCServer guard: the listen address string is empty, so no listener can be created. The at-fault input is the address parameter (e.g., unset peer.listenAddress or an empty endpoint passed by a caller).

Source

Thrown at internal/pkg/comm/server.go:46

	listener net.Listener
	// GRPC server
	server *grpc.Server
	// Certificate presented by the server for TLS communication
	// stored as an atomic reference
	serverCertificate atomic.Value
	// lock to protect concurrent access to append / remove
	lock *sync.Mutex
	// TLS configuration used by the grpc server
	tls *TLSConfig
	// Server for gRPC Health Check Protocol.
	healthServer *health.Server
}

// NewGRPCServer creates a new implementation of a GRPCServer given a
// listen address
func NewGRPCServer(address string, serverConfig ServerConfig) (*GRPCServer, error) {
	if address == "" {
		return nil, errors.New("missing address parameter")
	}
	// create our listener
	lis, err := net.Listen("tcp", address)
	if err != nil {
		return nil, err
	}
	return NewGRPCServerFromListener(lis, serverConfig)
}

// NewGRPCServerFromListener creates a new implementation of a GRPCServer given
// an existing net.Listener instance using default keepalive
func NewGRPCServerFromListener(listener net.Listener, serverConfig ServerConfig) (*GRPCServer, error) {
	grpcServer := &GRPCServer{
		address:  listener.Addr().String(),
		listener: listener,
		lock:     &sync.Mutex{},
	}

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Pass a non-empty listen address (host:port) to NewGRPCServer, e.g. '0.0.0.0:7051' or '127.0.0.1:9051'
  2. Check the caller: the address usually comes from config (peer.listenAddress / orderer.General.ListenAddress); verify that config key is set and read correctly
  3. Guard at the call site: validate/normalize the address string (strings.TrimSpace, net.SplitHostPort) before constructing the server and fail fast with a clearer config-oriented message
  4. If the address is computed dynamically, ensure the computation cannot yield '' (e.g. when port is disabled or optional) and fall back to a sane default
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/pkg/comm/server.go:46 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/cd1ad73b300a8d3d. Report an issue: GitHub.