weaviate/weaviate · error

backup class %v descriptor: %w

Error message

backup class %v descriptor: %w

What it means

Wraps any failure from idx.descriptor(...) — the per-class backup descriptor construction — and stores it in desc.Error as "backup class <name> descriptor: <cause>". This means building the class's backup description (listing/validating shard backups against the base descriptor) failed locally on this node.

Source

Thrown at adapters/repos/db/backup.go:146

					return
				}
				idx.dropIndex.RLock()
				defer idx.dropIndex.RUnlock()
				if err := idx.enterRead(); err != nil {
					desc.Error = fmt.Errorf("index for class %v is closed", c)
					return
				}
				defer idx.exitRead()
				var classBaseDescr []*backup.ClassDescriptor
				for _, b := range baseDescrs {
					classbaseDescrTmp := b.GetClassDescriptor(c)
					if classbaseDescrTmp == nil {
						continue
					}
					classBaseDescr = append(classBaseDescr, classbaseDescrTmp)
				}
				if err := idx.descriptor(ctx, bakid, &desc, classBaseDescr); err != nil {
					desc.Error = fmt.Errorf("backup class %v descriptor: %w", c, err)
				}
			}()

			ds <- desc
			if desc.Error != nil {
				break
			}
		}
	}
	enterrors.GoWrapper(f, db.logger)
	return ds
}

// ReleaseBackup release resources acquired by the index during backup
func (db *DB) ReleaseBackup(ctx context.Context, bakID, class string) (err error) {
	fields := logrus.Fields{
		"op":    "release_backup",
		"class": class,

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Inspect the wrapped cause for the underlying storage error
  2. Verify the backup backend (S3/GCS/Azure/FS) credentials, permissions and availability
  3. Clean up stale/partial backup artifacts and retry with a fresh backup ID
  4. Retry the backup; transient backend errors are a common cause

Example fix

// before
client.Backup().Create(backend, id, "Articles") // backend misconfigured
// after
// validate backend first
client.Backup().Creator().WithBackend(backend).WithBackupID(id) // check store access/permissions beforehand
Defensive patterns

Strategy: retry

Validate before calling

// Verify backend accessibility first
if err := checkBackupBackendAccess(ctx, backend); err != nil {
    return fmt.Errorf("fix backend before backup: %w", err)
}

Try / catch

if strings.Contains(err.Error(), "backup class") {
    var cause error
    errors.As(err, &cause) // inspect underlying storage error
    // fix backend/permissions, then retry with fresh backup ID
}

Prevention

When it happens

Trigger: idx.descriptor returns an error during backup AllClasses: missing or corrupt shard backup files, backend storage errors, or mismatch between the current descriptor and the base descriptors from previous backup attempts.

Common situations: Object-store outages or misconfigured backup backends, partial backups left behind by earlier failed runs, permission errors on the backup bucket.

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/b0a961b5c8779322. Report an issue: GitHub.