Explorar el 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 hace 15 años
padre
commit
c9d59df93b
Se han modificado 1 ficheros con 4 adiciones y 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