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, err

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Unset ASYNC_REPLICATION_DISABLED (and any equivalent runtime override) so async replication is enabled cluster-wide, then retry.
  2. Check per-collection replicationConfig in the schema; ensure RF>1 collections have async replication enabled.
  3. If the collection genuinely exists, verify schema replication/RAFT health so this node knows the class.
  4. 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

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


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