On Thu, Apr 14, 2022 at 11:11 AM Richard W.M. Jones <rjo...@redhat.com> wrote: > > > Sorry, that patch was incomplete. Here's a better patch. > > Rich. > > commit d2c018676111de0d5fb895301fb9035c8763f5bb (HEAD -> master) > Author: Richard W.M. Jones <rjo...@redhat.com> > Date: Thu Apr 14 09:09:15 2022 +0100 > > -o rhv-upload: Use time.monotonic > > In Python >= 3.3 we can use a monotonic instead of system clock, which > ensures the clock will never go backwards during these loops. > > Thanks: Nir Soffer > > diff --git a/output/rhv-upload-finalize.py b/output/rhv-upload-finalize.py > index 4d1dcfb2f4..1221e766ac 100644 > --- a/output/rhv-upload-finalize.py > +++ b/output/rhv-upload-finalize.py > @@ -73,7 +73,7 @@ def finalize_transfer(connection, transfer_id, disk_id): > .image_transfers_service() > .image_transfer_service(transfer_id)) > > - start = time.time() > + start = time.monotonic() > > transfer_service.finalize() > > @@ -125,14 +125,14 @@ def finalize_transfer(connection, transfer_id, disk_id): > raise RuntimeError( > "transfer %s was paused by system" % (transfer.id,)) > > - if time.time() > start + timeout: > + if time.monotonic() > start + timeout: > raise RuntimeError( > "timed out waiting for transfer %s to finalize, " > "transfer is %s" > % (transfer.id, transfer.phase)) > > debug("transfer %s finalized in %.3f seconds" > - % (transfer_id, time.time() - start)) > + % (transfer_id, time.monotonic() - start)) > > > # Parameters are passed in via a JSON doc from the OCaml code. > diff --git a/output/rhv-upload-transfer.py b/output/rhv-upload-transfer.py > index cf4f8807e6..62b842b67b 100644 > --- a/output/rhv-upload-transfer.py > +++ b/output/rhv-upload-transfer.py > @@ -128,13 +128,13 @@ def create_disk(connection): > # can't start if the disk is locked. > > disk_service = disks_service.disk_service(disk.id) > - endt = time.time() + timeout > + endt = time.monotonic() + timeout > while True: > time.sleep(1) > disk = disk_service.get() > if disk.status == types.DiskStatus.OK: > break > - if time.time() > endt: > + if time.monotonic() > endt: > raise RuntimeError( > "timed out waiting for disk %s to become unlocked" % disk.id) > > @@ -176,7 +176,7 @@ def create_transfer(connection, disk, host): > # If the transfer was paused, we need to cancel it to remove the disk, > # otherwise the system will remove the disk and transfer shortly after. > > - endt = time.time() + timeout > + endt = time.monotonic() + timeout > while True: > time.sleep(1) > try: > @@ -204,7 +204,7 @@ def create_transfer(connection, disk, host): > "unexpected transfer %s phase %s" > % (transfer.id, transfer.phase)) > > - if time.time() > endt: > + if time.monotonic() > endt: > transfer_service.cancel() > raise RuntimeError( > "timed out waiting for transfer %s" % transfer.id)
Looks good. Nir _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs