pulumi/pulumi · error
collect state migrations: %w
Error message
collect state migrations: %w
What it means
State migrations registered by providers (for resource state upgrades) are collected in a locked closure during RegisterResource. If registration of pending state migrations fails, the error is wrapped as 'collect state migrations: %w'.
Source
Thrown at pkg/resource/deploy/source_eval.go:2557
defer rm.pendingStateMigrationsLock.Unlock()
if pending, ok := rm.pendingStateMigrations[pendingKey]; ok {
delete(rm.pendingStateMigrations, pendingKey)
stateMigrations = pending
} else {
stateMigrations, err = slice.MapError(req.StateMigrations, rm.wrapStateMigrationCallback)
if err != nil {
return err
}
// We only need to save this for remote calls
if remote && len(stateMigrations) > 0 {
rm.pendingStateMigrations[pendingKey] = stateMigrations
}
}
return nil
}()
if err != nil {
return nil, fmt.Errorf("collect state migrations: %w", err)
}
// We handle updating the providers map to include the providers field of the parent if
// both the current resource and its parent is a component resource.
func() {
// Function exists to scope the lock
rm.componentProvidersLock.Lock()
defer rm.componentProvidersLock.Unlock()
if parentsProviders, parentIsComponent := rm.componentProviders[parent]; !custom &&
parent != "" && parentIsComponent {
for k, v := range parentsProviders {
if opts.Providers == nil {
opts.Providers = map[string]string{}
}
if _, ok := opts.Providers[k]; !ok {
opts.Providers[k] = v
}
}View on GitHub (pinned to 793f7b2e16)
Solutions
- Upgrade or reinstall the provider plugin so migration metadata resolves
- Check the provider's plugin logs for the underlying failure during registration
- Pin a provider version known to support the state migrations for your stack
Example fix
pulumi plugin install resource myprov v2.1.0 # replace broken/missing plugin
Defensive patterns
Strategy: try-catch
Try / catch
if err := registerStateMigrations(key); err != nil {
return nil, fmt.Errorf("collect state migrations: %w", err)
} Prevention
- Keep provider plugins installed and up to date
- Pin provider versions with migrations available
- Inspect provider logs on registration failures
When it happens
Trigger: RegisterResource where the resource's provider (or parent provider) supplies state migrations via GetStateMigrations/pendingStateMigrations and the collection closure returns an error (e.g. gRPC call to provider fails).
Common situations: Provider plugins implementing state migrations failing mid-handshake; provider version mismatch where migration metadata cannot be resolved; provider crash during registration.
Related errors
- parse provider request: %w
- the builtin provider does not support List
- unknown property "%v"
- stack reference can not be imported
- stash can not be imported
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/d01970bc592b20db.
Report an issue: GitHub.