You have been subscribed to a public bug:
nova.virt.libvirt./driver.py:LibvirtDriver._live_migration() spawn a thread to
execute _live_migration_operation(called after threadA).Original thread execute
_live_migration_monitor (called after threadB).
Assignment statement inst_type=instance.flavor call
nova/objects/instance.py:obj_load_attr in function _live_migration_operation.
Function _live_migration_monitor call func _live_migration_data_gb。Assignment
statement ram_gb = instance.flavor.memory_mb * units.Mi / units.Gi also call
nova/objects/instance.py:obj_load_attr.
Function temporary_mutation is called by obj_load_attr. The mistack caused by
the temporary_mutation is called by two threads simultaneously。
Time0: self._context[‘read.deleted’] is ‘no’
Time1: ThreadA called temporary_mutation, self._context[‘read.deleted’] is
assigned a value of ‘yes’. Old value is ‘no’.
Time2: ThreadB called temporary_mutation, self._context[‘read.deleted’] is
assigned a value of ‘yes’. Old value is ‘yes’.
Time3: ThreadA executing finally code of temporary_mutation, the value of
self._context[‘read.deleted’] is restored to ‘no’.
Time3: ThreadA executing finally code of temporary_mutation, the value of
self._context[‘read.deleted’] is restored to ‘yes’.
Result : Two calls to temporary_mutation cause the value of
self._context[‘read.deleted’] to change from ‘no’ to ‘yes’. When Source host
calling update_available_resource(ctxt) in _post_live_migration, Grabbing all
instances assigned to this node will read deleted instances, which is
time-consuming.
** Affects: nova
Importance: Undecided
Status: New
--
A mistack caused by temporary_mutation reentry
https://bugs.launchpad.net/bugs/1941819
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp