← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1591240] [NEW] progress_watermark is not updated

 

Public bug reported:

During the live migration process the progress_watermark/progress_time
are not being (re)updated with the new progress made by the live
migration at the "_live_migration_monitor" function
(virt/libvirt/driver.py).

More specifically, in these lines of code:
    if ((progress_watermark is None) or
        (progress_watermark > info.data_remaining)):
        progress_watermark = info.data_remaining
        progress_time = now


It may happen that the first time it gets inside (progress_watermark = None), the info.data_remaining is still 0, thus the progress_watermark is set to 0. This avoids to get inside the "if" block in the future iterations (as progress_watermark=0 is never bigger than info.data_remaining), and thus not updating neither the progress_watermark, nor the progress_time from that point. 

This may lead to (unneeded) abort migrations due to progress_time not
being updated, making (now - progress_time) > progress_timeout.

It can be fixed just by modifying the if clause to be like:
    if ((progress_watermark is None) or
        (progress_watermark == 0) or
        (progress_watermark > info.data_remaining)):

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1591240

Title:
  progress_watermark is not updated

Status in OpenStack Compute (nova):
  New

Bug description:
  During the live migration process the progress_watermark/progress_time
  are not being (re)updated with the new progress made by the live
  migration at the "_live_migration_monitor" function
  (virt/libvirt/driver.py).

  More specifically, in these lines of code:
      if ((progress_watermark is None) or
          (progress_watermark > info.data_remaining)):
          progress_watermark = info.data_remaining
          progress_time = now

  
  It may happen that the first time it gets inside (progress_watermark = None), the info.data_remaining is still 0, thus the progress_watermark is set to 0. This avoids to get inside the "if" block in the future iterations (as progress_watermark=0 is never bigger than info.data_remaining), and thus not updating neither the progress_watermark, nor the progress_time from that point. 

  This may lead to (unneeded) abort migrations due to progress_time not
  being updated, making (now - progress_time) > progress_timeout.

  It can be fixed just by modifying the if clause to be like:
      if ((progress_watermark is None) or
          (progress_watermark == 0) or
          (progress_watermark > info.data_remaining)):

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1591240/+subscriptions


Follow ups