[placement] Train upgrade warning

CHANU ROMAIN romain.chanu at univ-lyon1.fr
Mon Dec 21 20:16:41 UTC 2020


Sorry I could not work on this for a while.

To fix this issue I just added one request to my previous message. I
will write down my entire procedure:

use nova;
update instance_id_mappings set deleted = id where uuid in (select uuid
from instances where deleted != 0);

nova-manage db archive_deleted_rows --all-cells --until-complete

delete from nova.instance_id_mappings where uuid not in (select uuid
from nova.instances);

delete from nova_api.consumers where nova_api.consumers.uuid not in
(select nova_api.instance_mappings.instance_uuid from

Thus new request:

delete from placement.consumers where placement.consumers.uuid not in
(select nova_api.instance_mappings.instance_uuid from

I already executed the db migrate script so I have to clear placement

If you still have negative values I think there are many cases. I faced
- All instances in a deleted project are still present in
placement/nova_api consumers. I removed them from
nova_api.instance_mappings before nova-manage db archive_deleted_rows
- Last one is weird: A very old shelved instance which appeared after
placement-manage db online_data_migrations

Best regards,

On Wed, 2020-11-04 at 09:08 -0800, melanie witt wrote:
> 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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3217 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20201221/7d7c9467/attachment-0001.bin>

More information about the openstack-discuss mailing list