Explorar o código

In threaded programs, more than one thread can try to add the same object at
the same time and this can cause os.mkdir to fail.

Bruce Duncan %!s(int64=15) %!d(string=hai) anos
pai
achega
c9d59df93b
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      dulwich/object_store.py

+ 4 - 1
dulwich/object_store.py

@@ -470,8 +470,11 @@ class DiskObjectStore(PackBasedObjectStore):
         :param obj: Object to add
         """
         dir = os.path.join(self.path, obj.id[:2])
-        if not os.path.isdir(dir):
+        try:
             os.mkdir(dir)
+        except OSError, e:
+            if e.errno != errno.EEXIST:
+                raise
         path = os.path.join(dir, obj.id[2:])
         if os.path.exists(path):
             return # Already there, no need to write again