{"record":{"id":"aee37721851696e3","repo":"weaviate/weaviate","slug":"backup-s-not-found","errorCode":null,"errorMessage":"backup: %s not found","messagePattern":"backup: (.+?) not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"usecases/modules/modules.go","lineNumber":1119,"sourceCode":"\treturn metaInfos, nil\n}\n\nfunc (p *Provider) getClass(className string) (*models.Class, error) {\n\tclass := p.schemaGetter.ReadOnlyClass(className)\n\tif class == nil {\n\t\treturn nil, errors.Errorf(\"class %q not found in schema\", className)\n\t}\n\treturn class, nil\n}\n\nfunc (p *Provider) HasMultipleVectorizers() bool {\n\treturn p.hasMultipleVectorizers\n}\n\nfunc (p *Provider) BackupBackend(backend string, useCase modulecapabilities.BackendUseCase) (modulecapabilities.BackupBackend, error) {\n\tmodule := p.GetByName(backend)\n\tif module == nil {\n\t\treturn nil, errors.Errorf(\"backup: %s not found\", backend)\n\t}\n\tif module.Type() != modulecapabilities.Backup {\n\t\treturn nil, errors.Errorf(\"backup: %s is not a backup backend type\", backend)\n\t}\n\tbb, ok := module.(modulecapabilities.BackupBackend)\n\tif !ok {\n\t\treturn nil, errors.Errorf(\"backup: %s is not a backup backend (actual type: %T)\", backend, module)\n\t}\n\tif useCase == modulecapabilities.BackendUseCaseExport {\n\t\tif ep, ok := module.(modulecapabilities.ExportBackendProvider); ok {\n\t\t\treturn ep.ExportBackend(), nil\n\t\t}\n\t}\n\treturn bb, nil\n}\n\nfunc (p *Provider) OffloadBackend(backend string) (modulecapabilities.OffloadCloud, bool) {\n\tif module := p.GetByName(backend); module != nil {","sourceCodeStart":1101,"sourceCodeEnd":1137,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/usecases/modules/modules.go#L1101-L1137","documentation":"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).","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use the full module name in the backup URL: /v1/backups/backup-s3/... not /v1/backups/s3/... (depending on Weaviate version).","Enable the backup module: add backup-s3 (or backup-gcs/backup-azure/backup-filesystem) to ENABLE_MODULES and set its config (bucket, env vars).","Confirm enabled modules via GET /v1/meta.","In Go code calling BackupBackend, check Provider.GetByName(backend) != nil first."],"exampleFix":"// before\nclient.backup.creator().withBackend(\"s3\").withBackupId(\"snap1\").do(ctx)\n// after\nclient.backup.creator().withBackend(\"backup-s3\").withBackupId(\"snap1\").do(ctx)","handlingStrategy":"validation","validationCode":"const meta = await weaviate.metagetter().do();\nconst backends = ['backup-filesystem','backup-s3','backup-gcs','backup-azure'];\nconst enabled = Object.keys(meta.modules || {});\nif (!enabled.some(m => backends.includes(m))) throw new Error('no backup module enabled in ENABLE_MODULES');","typeGuard":null,"tryCatchPattern":"try {\n  await client.backup.creator().withBackend(backend).withBackupId(id).do(ctx);\n} catch (e) {\n  if (String(e).includes('backup:') && String(e).includes('not found')) {\n    throw new Error(`Backup backend \"${backend}\" not enabled — check ENABLE_MODULES`);\n  }\n  throw e;\n}","preventionTips":["Always use the full module name (backup-s3, not s3) in backup API paths","Add backup modules to ENABLE_MODULES in every environment where backups run","Smoke-test a dry backup after deployment"],"tags":["backup","modules","configuration"],"backgroundTag":"backup-backend-not-found","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}