{"record":{"id":"cd1ad73b300a8d3d","repo":"hyperledger/fabric","slug":"missing-address-parameter","errorCode":null,"errorMessage":"missing address parameter","messagePattern":"missing address parameter","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/pkg/comm/server.go","lineNumber":46,"sourceCode":"\tlistener net.Listener\n\t// GRPC server\n\tserver *grpc.Server\n\t// Certificate presented by the server for TLS communication\n\t// stored as an atomic reference\n\tserverCertificate atomic.Value\n\t// lock to protect concurrent access to append / remove\n\tlock *sync.Mutex\n\t// TLS configuration used by the grpc server\n\ttls *TLSConfig\n\t// Server for gRPC Health Check Protocol.\n\thealthServer *health.Server\n}\n\n// NewGRPCServer creates a new implementation of a GRPCServer given a\n// listen address\nfunc NewGRPCServer(address string, serverConfig ServerConfig) (*GRPCServer, error) {\n\tif address == \"\" {\n\t\treturn nil, errors.New(\"missing address parameter\")\n\t}\n\t// create our listener\n\tlis, err := net.Listen(\"tcp\", address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewGRPCServerFromListener(lis, serverConfig)\n}\n\n// NewGRPCServerFromListener creates a new implementation of a GRPCServer given\n// an existing net.Listener instance using default keepalive\nfunc NewGRPCServerFromListener(listener net.Listener, serverConfig ServerConfig) (*GRPCServer, error) {\n\tgrpcServer := &GRPCServer{\n\t\taddress:  listener.Addr().String(),\n\t\tlistener: listener,\n\t\tlock:     &sync.Mutex{},\n\t}\n","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/internal/pkg/comm/server.go#L28-L64","documentation":"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).","triggerScenarios":"Thrown at internal/pkg/comm/server.go:46 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-empty listen address (host:port) to NewGRPCServer, e.g. '0.0.0.0:7051' or '127.0.0.1:9051'","Check the caller: the address usually comes from config (peer.listenAddress / orderer.General.ListenAddress); verify that config key is set and read correctly","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","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}