소스 검색

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 15 년 전
부모
커밋
c9d59df93b
1개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  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