weaviate/weaviate · error
put initial metadata: %w
Error message
put initial metadata: %w
What it means
Returned during a distributed restore after participants committed: writing the initial global restore metadata (PutMeta of GlobalRestoreFile, with status set to Transferring) to the backend failed. Because commit already happened, the coordinator not only resets local state but also issues an AbortRequest via abortAll to roll back the participants.
Source
Thrown at usecases/backup/coordinator.go:315
c.observeRestorePhase("prepare", time.Since(canCommitStart))
if err != nil {
c.lastOp.reset()
return err
}
// Set status to Transferring now that staging has begun
c.descriptor.Status = backup.Transferring
c.lastOp.set(backup.Transferring)
overrideBucket := req.Bucket
overridePath := req.Path
// initial put so restore status is immediately available
if err := store.PutMeta(ctx, GlobalRestoreFile, c.descriptor, overrideBucket, overridePath); err != nil {
c.lastOp.reset()
req := &AbortRequest{Method: OpRestore, ID: desc.ID, Backend: req.Backend}
c.abortAll(ctx, req, nodes)
return fmt.Errorf("put initial metadata: %w", err)
}
statusReq := StatusRequest{Method: OpRestore, ID: desc.ID, Backend: req.Backend, Bucket: overrideBucket, Path: overridePath}
g := func() {
defer c.lastOp.reset()
ctx := context.Background()
// checkStorageCancelled reads from storage to check if restore was cancelled.
// Storage is the authoritative source since it works across all nodes in the cluster.
// Returns true if the restore should stop due to cancellation.
// Treats both CANCELLING and CANCELLED as cancellation signals - CANCELLING means
// another coordinator has claimed and is processing the cancellation.
checkStorageCancelled := func() bool {
storedMeta, err := store.Meta(ctx, GlobalRestoreFile, overrideBucket, overridePath)
if err != nil {
return false // Can't read storage, continue with operation
}
if storedMeta.Status == backup.Cancelled || storedMeta.Status == backup.Cancelling {View on GitHub (pinned to 75aa4b6d11)
Solutions
- Check backup backend availability, credentials, and bucket/path write permissions
- Inspect node logs for the subsequent abort messages to confirm all participants rolled back cleanly
- Fix the backend issue and retry the restore from scratch
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at usecases/backup/coordinator.go:315 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/29004b2d2483364b.
Report an issue: GitHub.