]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
sql import: update zone file atomically
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 21 Dec 2018 15:19:56 +0000 (16:19 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Tue, 22 Jan 2019 14:22:19 +0000 (15:22 +0100)
scripts/dns_sql2zf.py

index 60d6034d8d1eda17d316c8d7756b5489e173b77c..9fb7dd9e28017b42f2dea97c9001b4019cc2196e 100755 (executable)
@@ -168,10 +168,13 @@ def print_domain(domain, change_type = 0, txn = None):
     global slave_mode
     dn = domain_id2name(domain, txn) if str(domain).isdigit() else domain
     if not slave_mode:
-        f = open(zone_storage(dn), "w")
+        file_name = zone_storage(dn)
+        tmp_name = "%s.tmp" % file_name
+        f = open(tmp_name, "w")
         for r in domain_get_records(domain, txn):
             print_record(r, f)
         f.close()
+        os.rename(tmp_name, file_name)
     if knotc_socket is not None:
         knotc_send(change_type, dn)
     print("Updated zone %s" % dn)