summaryrefslogtreecommitdiffstats
path: root/gluster/swift/common
diff options
context:
space:
mode:
Diffstat (limited to 'gluster/swift/common')
-rw-r--r--gluster/swift/common/DiskDir.py2
-rw-r--r--gluster/swift/common/utils.py27
2 files changed, 15 insertions, 14 deletions
diff --git a/gluster/swift/common/DiskDir.py b/gluster/swift/common/DiskDir.py
index 36504a6..d314a1f 100644
--- a/gluster/swift/common/DiskDir.py
+++ b/gluster/swift/common/DiskDir.py
@@ -559,7 +559,7 @@ class DiskDir(DiskCommon):
self.metadata[X_PUT_TIMESTAMP] = (timestamp, 0)
write_metadata(self.datadir, self.metadata)
- def delete_object(self, name, timestamp):
+ def delete_object(self, name, timestamp, obj_policy_index):
# NOOP - should never be called since object file removal occurs
# within a directory implicitly.
return
diff --git a/gluster/swift/common/utils.py b/gluster/swift/common/utils.py
index 8958717..1bbc56c 100644
--- a/gluster/swift/common/utils.py
+++ b/gluster/swift/common/utils.py
@@ -556,7 +556,7 @@ def dir_is_object(metadata):
return metadata.get(X_OBJECT_TYPE, "") == DIR_OBJECT
-def rmobjdir(dir_path):
+def rmobjdir(dir_path, marker_dir_check=True):
"""
Removes the directory as long as there are no objects stored in it. This
works for containers also.
@@ -580,18 +580,19 @@ def rmobjdir(dir_path):
for directory in dirs:
fullpath = os.path.join(path, directory)
- try:
- metadata = read_metadata(fullpath)
- except GlusterFileSystemIOError as err:
- if err.errno in (errno.ENOENT, errno.ESTALE):
- # Ignore removal from another entity.
- continue
- raise
- else:
- if dir_is_object(metadata):
- # Wait, this is an object created by the caller
- # We cannot delete
- return False
+ if marker_dir_check:
+ try:
+ metadata = read_metadata(fullpath)
+ except GlusterFileSystemIOError as err:
+ if err.errno in (errno.ENOENT, errno.ESTALE):
+ # Ignore removal from another entity.
+ continue
+ raise
+ else:
+ if dir_is_object(metadata):
+ # Wait, this is an object created by the caller
+ # We cannot delete
+ return False
# Directory is not an object created by the caller
# so we can go ahead and delete it.