The CRDB instance table records a migrating instance's destination Propolis ID, but not its destination sled or the destination Propolis's server IP. This is a minor hassle in a couple of places:
- When a migration succeeds, the source and target both know that migration has succeeded, but only the target can push a correct instance state update to Nexus (because the source doesn't have the right sled ID/Propolis IP to insert into the updated state).
- When a migration fails, Nexus can determine from the updates it receives from the relevant sleds that the destination Propolis is no longer needed and that its resources can be released. Ideally, before freeing resources, Nexus would explicitly verify with the destination sled that the destination Propolis really is gone, but Nexus doesn't know what the target sled was when migration fails (because there's no field for it).
The CRDB instance table records a migrating instance's destination Propolis ID, but not its destination sled or the destination Propolis's server IP. This is a minor hassle in a couple of places: