Skip to content

controller panics if migrations' entities collide with preexisting entities #3464

@qrkourier

Description

@qrkourier

An existing entity with a name property identical to a standard entity introduced in a migration appears to trigger an early startup panic, prbably the migration itself failing due to a unique name constraint.

This is reproducible when migrating from 1.6.12 (v41) to 1.8.0-pre4 (v44) if a configType named interfaces.v1 is introduced before running the migration.

I added some local, experimental debugging to verify the root cause:

{
  "arch": "amd64",
  "build-date": "2020-01-01 01:01:01",
  "cause": "edge datastore migrations failed: config type interfaces.v1 already exists with id 4bwjlfPnCAzoCeNyclm7Nl, but this controller expects id interfaces.v1",
  "error": "UNHANDLED: An unhandled error occurred",
  "file": "/mnt/ziti/ziti/run/run_controller.go:128",
  "func": "github.com/openziti/ziti/ziti/run.(*ControllerAction).Run",
  "go-version": "go1.25.3",
  "level": "error",
  "msg": "unable to create fabric controller (cause: edge datastore migrations failed: config type interfaces.v1 already exists with id 4bwjlfPnCAzoCeNyclm7Nl, but this controller expects id interfaces.v1)",
  "nodeId": "ziti-ctrl1-controller-ctrl-plane-client-identity",
  "os": "linux",
  "revision": "local",
  "time": "2025-12-18T23:19:17.322Z",
  "version": "v0.0.0"
}

At a minimum, it would be invaluable to print the cause, but I found it a little complex to surface it this way and you might prefer a different approach than I took.

That way, the user would realize they'd created the entity and have a chance to rename or delete it.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions