weaviate/weaviate · error · ErrExportValidation
%w: collections %v are not exportable: export requires async
Error message
%w: collections %v are not exportable: export requires async replication for every collection with replication factor > 1. This usually means async replication is disabled cluster-wide — unset ASYNC_REPLICATION_DISABLED (or the equivalent runtime override) to re-enable it — but it can also mean the collection is not yet known to this node
What it means
Validation error from Scheduler.Export (usecases/export/scheduler.go:182): one or more listed collections have replication factor > 1 but async replication is not enabled for them, and export requires async replication to take a consistent shard snapshot. The selector also returns false when the class has no local index, so the message covers both "async disabled" and "collection not known to this node". Wraps ErrExportValidation.
Source
Thrown at usecases/export/scheduler.go:182
return authorization.Backups(class)[0]
},
)
if len(classes) == 0 {
return nil, fmt.Errorf("%w: no exportable classes", ErrExportValidation)
}
// Require async replication for every exported class with RF > 1. The
// selector also returns false when the class has no local index, so the
// error below keeps both causes in view.
var noAsync []string
for _, class := range classes {
if !s.selector.IsAsyncReplicationEnabled(ctx, class) {
noAsync = append(noAsync, class)
}
}
if len(noAsync) > 0 {
return nil, fmt.Errorf("%w: collections %v are not exportable: export "+
"requires async replication for every collection with replication "+
"factor > 1. This usually means async replication is disabled "+
"cluster-wide — unset ASYNC_REPLICATION_DISABLED (or the equivalent "+
"runtime override) to re-enable it — but it can also mean the "+
"collection is not yet known to this node", ErrExportValidation, noAsync)
}
backendStore, err := s.backends.BackupBackend(backend, modulecapabilities.BackendUseCaseExport)
if err != nil {
return nil, fmt.Errorf("%w: backend %s not available: %w", ErrExportValidation, backend, err)
}
if err := backendStore.Initialize(ctx, id, bucket, path); err != nil {
return nil, fmt.Errorf("%w: initialize backend: %w", ErrExportValidation, err)
}
if err := s.checkIfExportExists(ctx, backendStore, id, bucket, path); err != nil {
return nil, errView on GitHub (pinned to 75aa4b6d11)
Solutions
- Unset ASYNC_REPLICATION_DISABLED (and any equivalent runtime override) so async replication is enabled cluster-wide, then retry.
- Check per-collection replicationConfig in the schema; ensure RF>1 collections have async replication enabled.
- If the collection genuinely exists, verify schema replication/RAFT health so this node knows the class.
- As a workaround, export collections with RF=1 or temporarily reduce replication requirements if consistency allows.
Example fix
// before docker: environment: ASYNC_REPLICATION_DISABLED: 'true' // after: remove the override (or set to 'false') and restart ENABLE_MODULES: '...' # ASYNC_REPLICATION_DISABLED removed
Defensive patterns
Strategy: validation
Validate before calling
schema, _ := client.Schema().Getter()
for _, c := range classes {
cls := findClass(schema, c)
if cls != nil && cls.ReplicationConfig.Factor > 1 {
// ensure async replication is enabled cluster-wide before exporting
if asyncDisabled { return fmt.Errorf("%s needs async replication enabled", c) }
}
} Try / catch
if err != nil {
if errors.Is(err, ErrExportValidation) && strings.Contains(err.Error(), "not exportable") {
// fix ASYNC_REPLICATION_DISABLED / schema, then retry
}
} Prevention
- Do not set ASYNC_REPLICATION_DISABLED on clusters that must support exports.
- Audit runtime config overrides before running exports.
- For new collections, enable async replication when RF > 1.
- Ensure schema is fully replicated to all nodes before exporting from any node.
When it happens
Trigger: Export requested while any target collection (RF>1) has async replication disabled — typically because ASYNC_REPLICATION_DISABLED is set cluster-wide or via runtime config — or the collection schema is not yet known to this node.
Common situations: Cluster launched with ASYNC_REPLICATION_DISABLED=true (or the runtime override set) while someone attempts an export; collections created before async replication was introduced/upgraded; export hitting a node that has not yet learned about the collection.
Related errors
- node %q in shard %q cannot be added as replica from itself
- node %q in shard %q cannot be both removed and added
- %w: backend %s not available: %w
- parse uuid %q: %w
- invalid scale plan: source node %q for shard %q is marked fo
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/15e1273e3aaa7dcd.
Report an issue: GitHub.