[placement] Train upgrade warning

melanie witt melwittt at gmail.com
Wed Nov 4 17:08:50 UTC 2020


On 11/4/20 08:54, Seth Tunstall wrote:
> Hello,
> 
> In case it helps anyone else searching for this in future: Melanie's 
> suggestion to clean out the orphaned consumers worked perfectly in my 
> situation.
> 
> The last two I had were apparently left over from the original build of 
> this environment. I brute-force cleaned them out of the DB manually:
> 
> DELETE FROM nova_cell0.block_device_mapping WHERE 
> nova_cell0.block_device_mapping.instance_uuid IN (SELECT uuid FROM 
> nova_api.consumers WHERE nova_api.consumers.uuid NOT IN (SELECT 
> nova_api.allocations.consumer_id FROM nova_api.allocations));

<snip>

> Caveat: I am not intimately familiar with how the ORM handles these DB 
> tables, I may have done something stupid here.

Hm, sorry, this isn't what I was suggesting you do ... I was making a 
guess that you might have instances with 'deleted' != 0 in your 
nova_cell0 database and that if so, they needed to be archived using 
'nova-manage db archive_deleted_rows' and then that might take care of 
removing their corresponding nova_api.instance_mappings which would make 
the manual cleanup find more rows (the rows that were being complained 
about).

What you did is "OK" (not harmful) if the nova_cell0.instances records 
associated with those records were 'deleted' column != 0. But there's 
likely more cruft rows left behind that will never be removed. 
nova-manage db archive_deleted_rows should be used whenever possible 
because it knows how to remove all the things.

> I tried to run:
> 
> nova-manage db archive_deleted_rows --verbose --until-complete --all-cells
> 
> but nova-db-manage complained that it didn't recognise --no-cells

This is with the train code? --all-cells was added in train [1]. If you 
are running with code prior to train, you have to pass a nova config 
file to the nova-manage command that has its [api_database]connection 
set to the nova_api database connection url and the [database]connection 
set to the nova_cell0 database. Example:

nova-manage --config-file <nova.conf pointing at nova_cell0> db 
archive_deleted_rows ...

Cheers,
-melanie

[1] https://docs.openstack.org/nova/train/cli/nova-manage.html#nova-database



More information about the openstack-discuss mailing list