From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 25 Aug 2015 02:56:48 +0000 (+0200)
Subject: Write worldstate sans atomicity deletion,for less outage towards client.
X-Git-Tag: tce~341
X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/static/%7B%7Bdb.prefix%7D%7D/%7B%7Btodo.comment%7D%7D?a=commitdiff_plain;h=8c2efcbbda8ff1c7bc7f4bdf5d3daffe58ae5c7b;p=plomrogue

Write worldstate sans atomicity deletion,for less outage towards client.
---

diff --git a/plomrogue-server.py b/plomrogue-server.py
index 1778353..a173237 100755
--- a/plomrogue-server.py
+++ b/plomrogue-server.py
@@ -142,7 +142,7 @@ def obey(command, prefix, replay=False, do_record=False):
         print("Invalid command/argument, or bad number of tokens.")
 
 
-def atomic_write(path, text, do_append=False):
+def atomic_write(path, text, do_append=False, delete=True):
     """Atomic write of text to file at path, appended if do_append is set."""
     path_tmp = path + io_db["tmp_suffix"]
     mode = "w"
@@ -153,7 +153,7 @@ def atomic_write(path, text, do_append=False):
     file = open(path_tmp, mode)
     strong_write(file, text)
     file.close()
-    if os.access(path, os.F_OK):
+    if delete and os.access(path, os.F_OK):
         os.remove(path)
     os.rename(path_tmp, path)
 
@@ -348,7 +348,7 @@ def try_worldstate_update():
                     c = world_db["ThingTypes"][mt[0]]["TT_SYMBOL"]
                     mem[(mt[1] * length) + mt[2]] = ord(c)
         string = write_map(string, mem)
-        atomic_write(io_db["path_worldstate"], string)
+        atomic_write(io_db["path_worldstate"], string, delete=False)
         strong_write(io_db["file_out"], "WORLD_UPDATED\n")
         io_db["worldstate_updateable"] = False