{"record":{"id":"0a1a8af6d30d8b36","repo":"dgraph-io/dgraph","slug":"no-addr-no-address-provided-v","errorCode":null,"errorMessage":"NO_ADDR: No address provided: %+v","messagePattern":"NO_ADDR: No address provided: %\\+v","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dgraph/cmd/zero/zero.go","lineNumber":543,"sourceCode":"\t// brief window between restart and reconciliation.\n\tmyAddr := s.Node.RaftContext.Addr\n\tif myId := s.Node.Id; myAddr != \"\" {\n\t\tif z, ok := ms.GetZeros()[myId]; ok && z.GetAddr() != myAddr {\n\t\t\tz.Addr = myAddr\n\t\t}\n\t}\n\n\tif m.ClusterInfoOnly {\n\t\t// This request only wants to access the membership state, and nothing else. Most likely\n\t\t// from our clients.\n\t\tcs := &pb.ConnectionState{\n\t\t\tState:      ms,\n\t\t\tMaxPending: s.orc.MaxPending(),\n\t\t}\n\t\treturn cs, err\n\t}\n\tif m.Addr == \"\" {\n\t\treturn &emptyConnectionState, errors.Errorf(\"NO_ADDR: No address provided: %+v\", m)\n\t}\n\n\tfor _, member := range ms.Removed {\n\t\t// It is not recommended to reuse RAFT ids.\n\t\tif member.GroupId != 0 && m.Id == member.Id {\n\t\t\treturn &emptyConnectionState, errors.Errorf(\n\t\t\t\t\"REUSE_RAFTID: Duplicate Raft ID %d to removed member: %+v\", m.Id, member)\n\t\t}\n\t}\n\n\tnumberOfNodes := len(ms.Zeros)\n\tfor _, group := range ms.Groups {\n\t\tfor _, member := range group.Members {\n\t\t\tswitch {\n\t\t\tcase member.Addr == m.Addr && m.Id == 0:\n\t\t\t\tglog.Infof(\"Found a member with the same address. Returning: %+v\", member)\n\t\t\t\tconn.GetPools().Connect(m.Addr, s.tlsClientConfig)\n\t\t\t\treturn &pb.ConnectionState{","sourceCodeStart":525,"sourceCodeEnd":561,"githubUrl":"https://github.com/dgraph-io/dgraph/blob/759e242be62c91f8d084da06ad0c8d21256d9c07/dgraph/cmd/zero/zero.go#L525-L561","documentation":"Zero's Connect RPC requires the member to advertise its address. If the Connection request has an empty Addr field, Zero cannot register the node in the membership state and rejects it with the NO_ADDR prefix. This is a client-side request-construction bug or misconfiguration.","triggerScenarios":"Calling Connect with &pb.Member{Id: X} but Addr left as \"\"; alpha started in a way that cannot determine its own advertised address (missing/blank --my or --addr flags).","commonSituations":"Docker/Kubernetes deployments where the my address is unset or resolves to empty; custom tooling invoking the Zero gRPC API directly without setting Addr; hostname resolution failures leaving Addr blank.","solutions":["Set a unique external address for the dgraph server using --my=<host>:7080 (the internal gRPC server address).","If invoking Connect programmatically, populate m.Addr before sending the request.","Verify environment/hostname resolution in containers so the advertised address is non-empty.","Restart the node with correct flags; check `dgraph alpha --my` value appears in Zero's /state output."],"exampleFix":"// before\ndgraph alpha --zero=z1:5080 // --my defaults/resolves to empty\n\n// after\ndgraph alpha --zero=z1:5080 --my=alpha1:7080","handlingStrategy":"validation","validationCode":"if m.Addr == \"\" {\n    return fmt.Errorf(\"refusing Connect: member %+v has no advertised address (--my)\", m)\n}","typeGuard":null,"tryCatchPattern":"cs, err := zc.Connect(ctx, m)\nif err != nil && strings.HasPrefix(err.Error(), \"NO_ADDR\") {\n    return fmt.Errorf(\"set --my=<host>:7080 on the dgraph server and retry: %w\", err)\n}","preventionTips":["Always configure --my with a unique, reachable host:port on every alpha.","Validate advertised address at startup and fail fast if empty.","In containers, ensure hostname/IP resolution yields a non-empty address."],"tags":["dgraph-zero","configuration","grpc","membership"],"backgroundTag":"missing-server-address","analyzedSha":"759e242be62c91f8d084da06ad0c8d21256d9c07","analyzedAt":"2026-09-01T14:42:12.034Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}