瀏覽代碼

avoid create the cache tag file on every get_cache_dir call

this re-introduces a race between os.path.exists vs. SaveFile creating that file, but due to the way how SaveFile works, it still makes sure that in the end there is a good cache tag file in place.
Thomas Waldmann 3 年之前
父節點
當前提交
d0a3b30fdf
共有 1 個文件被更改,包括 9 次插入8 次删除
  1. 9 8
      src/borg/helpers/fs.py

+ 9 - 8
src/borg/helpers/fs.py

@@ -93,14 +93,15 @@ def get_cache_dir():
     # Create path if it doesn't exist yet
     ensure_dir(cache_dir)
     cache_tag_fn = os.path.join(cache_dir, CACHE_TAG_NAME)
-    cache_tag_contents = CACHE_TAG_CONTENTS + textwrap.dedent("""
-    # This file is a cache directory tag created by Borg.
-    # For information about cache directory tags, see:
-    #       http://www.bford.info/cachedir/spec.html
-    """).encode('ascii')
-    from ..platform import SaveFile
-    with SaveFile(cache_tag_fn, binary=True) as fd:
-        fd.write(cache_tag_contents)
+    if not os.path.exists(cache_tag_fn):
+        cache_tag_contents = CACHE_TAG_CONTENTS + textwrap.dedent("""
+        # This file is a cache directory tag created by Borg.
+        # For information about cache directory tags, see:
+        #       http://www.bford.info/cachedir/spec.html
+        """).encode('ascii')
+        from ..platform import SaveFile
+        with SaveFile(cache_tag_fn, binary=True) as fd:
+            fd.write(cache_tag_contents)
     return cache_dir