weaviate/weaviate · error

backup: %s not found

Error message

backup: %s not found

What it means

BackupBackend resolves a backup-capable module by name for backup/restore operations. If Provider.GetByName finds no module registered under the given name, it returns "backup: %s not found". The backend string must exactly match a registered module name (e.g. backup-s3, backup-gcs, backup-filesystem).

Source

Thrown at usecases/modules/modules.go:1119

	return metaInfos, nil
}

func (p *Provider) getClass(className string) (*models.Class, error) {
	class := p.schemaGetter.ReadOnlyClass(className)
	if class == nil {
		return nil, errors.Errorf("class %q not found in schema", className)
	}
	return class, nil
}

func (p *Provider) HasMultipleVectorizers() bool {
	return p.hasMultipleVectorizers
}

func (p *Provider) BackupBackend(backend string, useCase modulecapabilities.BackendUseCase) (modulecapabilities.BackupBackend, error) {
	module := p.GetByName(backend)
	if module == nil {
		return nil, errors.Errorf("backup: %s not found", backend)
	}
	if module.Type() != modulecapabilities.Backup {
		return nil, errors.Errorf("backup: %s is not a backup backend type", backend)
	}
	bb, ok := module.(modulecapabilities.BackupBackend)
	if !ok {
		return nil, errors.Errorf("backup: %s is not a backup backend (actual type: %T)", backend, module)
	}
	if useCase == modulecapabilities.BackendUseCaseExport {
		if ep, ok := module.(modulecapabilities.ExportBackendProvider); ok {
			return ep.ExportBackend(), nil
		}
	}
	return bb, nil
}

func (p *Provider) OffloadBackend(backend string) (modulecapabilities.OffloadCloud, bool) {
	if module := p.GetByName(backend); module != nil {

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Use the full module name in the backup URL: /v1/backups/backup-s3/... not /v1/backups/s3/... (depending on Weaviate version).
  2. Enable the backup module: add backup-s3 (or backup-gcs/backup-azure/backup-filesystem) to ENABLE_MODULES and set its config (bucket, env vars).
  3. Confirm enabled modules via GET /v1/meta.
  4. In Go code calling BackupBackend, check Provider.GetByName(backend) != nil first.

Example fix

// before
client.backup.creator().withBackend("s3").withBackupId("snap1").do(ctx)
// after
client.backup.creator().withBackend("backup-s3").withBackupId("snap1").do(ctx)
Defensive patterns

Strategy: validation

Validate before calling

const meta = await weaviate.metagetter().do();
const backends = ['backup-filesystem','backup-s3','backup-gcs','backup-azure'];
const enabled = Object.keys(meta.modules || {});
if (!enabled.some(m => backends.includes(m))) throw new Error('no backup module enabled in ENABLE_MODULES');

Try / catch

try {
  await client.backup.creator().withBackend(backend).withBackupId(id).do(ctx);
} catch (e) {
  if (String(e).includes('backup:') && String(e).includes('not found')) {
    throw new Error(`Backup backend "${backend}" not enabled — check ENABLE_MODULES`);
  }
  throw e;
}

Prevention

When it happens

Trigger: Starting a backup (POST /v1/backups/{backend}) or restore with a backend path segment that isn't an enabled module — e.g. /v1/backups/s3 when only backup-filesystem is enabled, or a misspelled backend name.

Common situations: backup-<provider> module missing from ENABLE_MODULES; URL path uses the provider ("s3") instead of the full module name ("backup-s3"); deployment where backup modules are disabled by default.

Related errors


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