Comment 2 for bug 1944758

Revision history for this message
Joseph Phillips (manadart) wrote :

Would have liked to see the output from when you ran:

db.ip.addresses.find({ $and: [ {_id: /.*x.16.211.10.*/}, {"machine-id": "y/lxd/z"} ] } )

That would tell us the "source" of the address.

We do have logic to handle this:
- There are 2 sources of addresses - the machine agent and the instance-poller (which asks the provider),
- Addresses have a source to indicate which of the sources above is responsible.
- There is a precedent here. If the instance-poller doesn't see an address, it updates it to be machine-sourced. The machine agent can only remove addresses that it is responsible for.

For safety there is an upgrade step accompanying the patches that fixed persistent VIPs. It set the source of all addresses to be the instance-poller.

I think there *may* have been a situation here where these processes had not *yet* run in the desired order - the instance-poller did not relinquish the address before the machine agent updated network config, so the machine agent had not yet deleted the address.

I'm going to mark this one as incomplete, but I'm happy to revisit it with more info. The logs should have entries when network configuration is updated, and the output of the DB query would tell us the currently assigned source for the address.