dgraph-io/dgraph · error

from processKVList

Error message

from processKVList

What it means

RunMapper fans out manifest processing to worker goroutines via processKVList; after closing reqCh it waits on the errgroup. If any worker failed, this wrapper propagates that error with the 'from processKVList' context.

Source

Thrown at worker/restore_map.go:900

				}
				// If there is a drop namespace, we just ban the namespace in the pstore.
				ns, err := strconv.ParseUint(op.DropValue, 0, 64)
				if err != nil {
					return nil, errors.Wrapf(err, "Map phase failed to parse namespace")
				}
				if err := pstore.BanNamespace(ns); err != nil {
					return nil, errors.Wrapf(err, "Map phase failed to ban namespace: %d", ns)
				}
				maxBannedNs = x.Max(maxBannedNs, ns)
			}
		}
		glog.Infof("[MAP] Processed manifest num: %v", manifest.BackupNum)
	} // done with all the manifests.

	glog.Infof("Histogram of map input sizes:\n%s\n", mapper.szHist)
	close(mapper.reqCh)
	if err := g.Wait(); err != nil {
		return nil, errors.Wrapf(err, "from processKVList")
	}
	if err := mapper.Flush(); err != nil {
		return nil, errors.Wrap(err, "failed to flush the mapper")
	}
	mapRes := &mapResult{
		maxUid:        mapper.maxUid,
		maxNs:         mapper.maxNs,
		shouldDropAll: dropAll,
		dropAttr:      dropAttr,
		dropNs:        dropNs,
	}
	// update the maxNsId considering banned namespaces.
	mapRes.maxNs = x.Max(mapRes.maxNs, maxBannedNs)
	return mapRes, nil
}

View on GitHub (pinned to 759e242be6)

Solutions

  1. Look at the wrapped root-cause error in the message chain to find the actual failing KV processing step
  2. Validate the backup manifest and data files before restoring
  3. Re-run the restore; transient IO failures may not recur
  4. Reduce mapper concurrency if resource exhaustion is the root cause
Defensive patterns

Strategy: try-catch

Validate before calling

if err := validateBackupManifest(manifests); err != nil { return fmt.Errorf("invalid backup: %w", err) }

Try / catch

res, err := RunMapper(ctx, opts)
if err != nil {
    // unwrap errgroup error chain to the real cause
    cause := errors.Cause(err)
    glog.Errorf("map phase failed, cause: %v", cause)
    return cause
}

Prevention

When it happens

Trigger: Any goroutine in the errgroup (processing KV lists from the backup manifests) returns an error, e.g. malformed KVs, decode failures, or downstream map-phase errors like the namespace-ban failure.

Common situations: Restoring a corrupted or truncated backup; concurrency/timeout failures while reading posting lists during map phase; an earlier wrapped error (e.g. error 960) surfacing here.

Related errors


AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01). Data as JSON: /api/errors/9d7205873abaedc2. Report an issue: GitHub.