dgraph-io/dgraph · error
group: [%d] is not a known group
Error message
group: [%d] is not a known group
What it means
MoveTablet is the gRPC/HTTP entry point on Dgraph Zero for moving a tablet (predicate) to a specific group. Before doing anything it checks that the requested destination group (req.DstGroup) is among the groups Zero currently knows about (s.KnownGroups()). If the group ID does not correspond to any registered Alpha group, Zero rejects the request as an invalid request (Status Code 1, x.ErrorInvalidRequest) with this message.
Source
Thrown at dgraph/cmd/zero/tablet.go:109
// MoveTablet can be used to move a tablet to a specific group.
// It takes in tablet and destination group as argument.
// It returns a *pb.Status to be used by the `/moveTablet` HTTP handler in Zero.
func (s *Server) MoveTablet(ctx context.Context, req *pb.MoveTabletRequest) (*pb.Status, error) {
if !s.Node.AmLeader() {
return &pb.Status{Code: 1, Msg: x.Error}, errNotLeader
}
knownGroups := s.KnownGroups()
var isKnown bool
for _, grp := range knownGroups {
if grp == req.DstGroup {
isKnown = true
break
}
}
if !isKnown {
return &pb.Status{Code: 1, Msg: x.ErrorInvalidRequest},
fmt.Errorf("group: [%d] is not a known group", req.DstGroup)
}
tablet := x.NamespaceAttr(req.Namespace, req.Tablet)
tab := s.ServingTablet(tablet)
if tab == nil {
return &pb.Status{Code: 1, Msg: x.ErrorInvalidRequest},
fmt.Errorf("namespace: %d. No tablet found for: %s", req.Namespace, req.Tablet)
}
srcGroup := tab.GroupId
if srcGroup == req.DstGroup {
return &pb.Status{Code: 1, Msg: x.ErrorInvalidRequest},
fmt.Errorf("namespace: %d. Tablet: [%s] is already being served by group: [%d]",
req.Namespace, req.Tablet, srcGroup)
}
if err := s.movePredicate(tablet, srcGroup, req.DstGroup); err != nil {
glog.Errorf("namespace: %d. While moving predicate %s from %d -> %d. Error: %v",View on GitHub (pinned to 759e242be6)
Solutions
- Check the cluster's known groups via /state endpoint on Zero and use an existing group ID as dst group
- Verify the destination Alphas are running and have registered with Zero (check Zero logs for membership)
- Correct the group ID in the /moveTablet request and retry
Example fix
// before curl localhost:6080/moveTablet?tablet=name&dst_group=5 # group 5 doesn't exist // after curl 'localhost:6080/state' | jq '.groups | keys' # confirm e.g. only groups 1,2 curl 'localhost:6080/moveTablet?tablet=name&dst_group=2'
Defensive patterns
Strategy: validation
Validate before calling
// before calling /moveTablet, confirm dst group exists
state=$(curl -s localhost:6080/state)
echo "$state" | jq -e --argjson g "$DST_GROUP" '.groups | has($g)' \
|| { echo "group $DST_GROUP is not known to Zero"; exit 1; } Type guard
is_known_group() {
curl -s localhost:6080/state | jq -e --argjson g "$1" '.groups | has($g)' >/dev/null
} Try / catch
resp=$(curl -s "localhost:6080/moveTablet?tablet=$TABLET&dst_group=$DST_GROUP") code=$(echo "$resp" | jq -r .code) [ "$code" = 1 ] && echo "moveTablet rejected: $(echo "$resp" | jq -r .msg)"
Prevention
- Fetch /state and pick only group IDs listed under .groups
- Verify destination Alphas are healthy via /health before issuing moves
- Keep a single source of truth (script reads /state) instead of hard-coding group IDs
When it happens
Trigger: Calling the /moveTablet HTTP endpoint (or MoveTablet gRPC) with a dst group ID that no Alpha group has registered: a typo'd or out-of-range group ID, referencing a group whose Alphas have never joined the cluster, or moving a tablet to a group that was decommissioned.
Common situations: Operators manually rebalancing predicates after scaling down and passing a now-removed group ID; scripting moves with wrong zero-based vs one-based group numbering; stale documentation or runbooks referencing groups from a previous cluster; Alphas of the destination group still down so they never registered with Zero.
Related errors
- namespace: %d. No tablet found for: %s
- namespace: %d. Tablet: [%s] is already being served by group
- Unable to move reserved predicate %s
- Tablet to be moved: [%v] is not being served
- I am not the Zero leader
AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01).
Data as JSON: /api/errors/24837fec2faee8b5.
Report an issue: GitHub.