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

  1. Check backup backend availability, credentials, and bucket/path write permissions
  2. Inspect node logs for the subsequent abort messages to confirm all participants rolled back cleanly
  3. 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.