Browse Source

storage/blockchain: use os.replace

3.3.3.1
SomberNight 6 years ago
parent
commit
bddea809ec
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 6
      electrum/blockchain.py
  2. 7
      electrum/storage.py

6
electrum/blockchain.py

@ -352,11 +352,7 @@ class Blockchain(util.PrintError):
self._forkpoint_hash, parent._forkpoint_hash = parent._forkpoint_hash, hash_raw_header(bh2u(parent_data[:HEADER_SIZE]))
self._prev_hash, parent._prev_hash = parent._prev_hash, self._prev_hash
# parent's new name
try:
os.rename(child_old_name, parent.path())
except OSError:
os.remove(parent.path())
os.rename(child_old_name, parent.path())
os.replace(child_old_name, parent.path())
self.update_size()
parent.update_size()
# update pointers

7
electrum/storage.py

@ -122,12 +122,7 @@ class JsonDB(PrintError):
os.fsync(f.fileno())
mode = os.stat(self.path).st_mode if os.path.exists(self.path) else stat.S_IREAD | stat.S_IWRITE
# perform atomic write on POSIX systems
try:
os.rename(temp_path, self.path)
except OSError:
os.remove(self.path)
os.rename(temp_path, self.path)
os.replace(temp_path, self.path)
os.chmod(self.path, mode)
self.print_error("saved", self.path)
self.modified = False

Loading…
Cancel
Save