Bug 34725 - uvmm/node.py use shutil.move instead of os.rename
uvmm/node.py use shutil.move instead of os.rename
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Virtualization - UVMM
UCS 3.2
Other Linux
: P5 normal (vote)
: UCS 3.2-4-errata
Assigned To: Philipp Hahn
Erik Damrose
:
Depends on:
Blocks: 36988
  Show dependency treegraph
 
Reported: 2014-05-02 11:42 CEST by Janis Meybohm
Modified: 2015-01-21 12:23 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Janis Meybohm univentionstaff 2014-05-02 11:42:45 CEST
2014043021004395

node.py breaks when cache dir is on a different partition than /tmp/. The use of os.rename should be avoided, it should be replaced with shutil.move 


2014-04-30 13:40:22,664 - uvmmd.node - ERROR - ('qemu://SERVER1.tlt.local/system',): Exception in timer_callbck
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/univention/uvmm/node.py", line 578, in run
    self.update_autoreconnect()
  File "/usr/lib/pymodules/python2.6/univention/uvmm/node.py", line 597, in update_autoreconnect
    self.update()
  File "/usr/lib/pymodules/python2.6/univention/uvmm/node.py", line 771, in update
    self.write_novnc_tokens()
  File "/usr/lib/pymodules/python2.6/univention/uvmm/node.py", line 790, in write_novnc_tokens
    os.rename(tmp_file.name, path)
OSError: [Errno 18] Invalid cross-device link
Comment 1 Philipp Hahn univentionstaff 2014-05-02 11:47:42 CEST
(In reply to Janis Meybohm from comment #0)
> The use of os.rename should be avoided, it should be replaced with shutil.move 

No: cross-device renames are not atomic and introduce other cases with file permission/disc full/etc.
The file should instead be created inside the same directory with a prefix/suffix/different name and then be renamed.
Comment 2 Janis Meybohm univentionstaff 2014-11-17 15:29:48 CET
Ticket#2014110521000477

Reported again.
Comment 3 Janis Meybohm univentionstaff 2014-11-25 08:54:12 CET
Reported Again
2014112421000628
Comment 4 Philipp Hahn univentionstaff 2014-11-26 21:51:22 CET
r56208 | Bug #34725 UVMM: Fix noVNC temporary file location
r56210 | Bug #34725 UVMM: Fix noVNC temporary file location YAML

Package: univention-virtual-machine-manager-daemon
Version: 3.0.18-2.562.201411262140
Branch: ucs_3.2-0
Scope: errata3.2-4
Comment 5 Erik Damrose univentionstaff 2015-01-21 09:22:50 CET
OK: temporary file is created in the same directory as the target file, still use os.rename to replace the original file
OK: YAML
Verified
Comment 6 Moritz Muehlenhoff univentionstaff 2015-01-21 12:23:41 CET
http://errata.univention.de/ucs/3.2/275.html