summaryrefslogtreecommitdiffstats
path: root/gluster/swift/common
diff options
context:
space:
mode:
authorPrashanth Pai <ppai@redhat.com>2016-05-19 15:33:07 +0530
committerThiago da Silva <thiago@redhat.com>2016-09-12 10:14:52 -0700
commita324c6e5cdfad77e8f91ec9869deb6b78425807e (patch)
tree22d89a29d43723d2728176bd10d9db1027507521 /gluster/swift/common
parentcfcfba624d554b46fe88f66949e02f5448d15e26 (diff)
Fix validation of marker dir objects
For marker directory objects, validate_object() always returned False. This was because st_size from stat was being compared to Content-Length stored in metadata. Unlike files, for directories st_size is always 4096. Hence the comparison would always be '4096 == 0' which would fail. This patch makes the following changes: * Do size comparison of st_size and Content-Length only for files. * Get rid of _is_dir everywhere. This will simplify things. Change-Id: Ib75e06c4e3bce36bab11ce7d029ff327f33c3146 Signed-off-by: Prashanth Pai <ppai@redhat.com> Reviewed-on: http://review.gluster.org/14423 Reviewed-by: Thiago da Silva <thiago@redhat.com> Tested-by: Thiago da Silva <thiago@redhat.com>
Diffstat (limited to 'gluster/swift/common')
-rw-r--r--gluster/swift/common/utils.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/gluster/swift/common/utils.py b/gluster/swift/common/utils.py
index 26e8c1b..70bf551 100644
--- a/gluster/swift/common/utils.py
+++ b/gluster/swift/common/utils.py
@@ -275,7 +275,7 @@ def validate_account(metadata):
return False
-def validate_object(metadata, stat=None):
+def validate_object(metadata, statinfo=None):
if not metadata:
return False
@@ -287,11 +287,14 @@ def validate_object(metadata, stat=None):
X_OBJECT_TYPE not in metadata.keys():
return False
- if stat and (int(metadata[X_CONTENT_LENGTH]) != stat.st_size):
+ if statinfo and stat.S_ISREG(statinfo.st_mode):
+
# File length has changed.
+ if int(metadata[X_CONTENT_LENGTH]) != statinfo.st_size:
+ return False
+
# TODO: Handle case where file content has changed but the length
# remains the same.
- return False
if metadata[X_TYPE] == OBJECT:
return True