Bug 1328446

Summary: [RHEL-6] gluster-swift [PERF]: Account and container listings fetch metadata from FS even when it's not needed
Product: [Red Hat Storage] Red Hat Gluster Storage Reporter: Prashanth Pai <ppai>
Component: gluster-swiftAssignee: Prashanth Pai <ppai>
Status: CLOSED ERRATA QA Contact: surabhi <sbhaloth>
Severity: medium Docs Contact:
Priority: high    
Version: rhgs-3.1CC: asrivast, nlevinki, rcyriac, rhinduja, rhs-bugs, sbhaloth, thiago
Target Milestone: ---Keywords: ZStream
Target Release: RHGS 3.1.3   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: swiftonfile-1.13.1-8 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1312810 Environment:
Last Closed: 2016-06-23 05:36:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1312810    
Bug Blocks: 1299184    

Comment 2 Prashanth Pai 2016-04-25 09:21:50 UTC
Changes posted here: https://code.engineering.redhat.com/gerrit/#/q/topic:bug-1328446

Comment 3 Prashanth Pai 2016-05-05 10:00:14 UTC
Downstream changes merged: https://code.engineering.redhat.com/gerrit/#/q/topic:bug-1328446

Comment 4 surabhi 2016-05-10 13:39:40 UTC
Verified with latest swiftclient build, there are no getxattr calls to each and every object inside container or each and every container inside Account which was the case with previous swift versions.

just verified it via strace output.No extensive perf testing has been done.
ps aux | grep account
root      7701  0.0  0.0 103308   856 pts/1    S+   13:11   0:00 grep account
root     32697  0.0  0.1 241024 15432 ?        Ss   Apr26   0:00 /usr/bin/python /usr/bin/swift-account-server /etc/swift/account-server.conf
root     32715  0.0  0.1 241500 13572 ?        S    Apr26   0:11 /usr/bin/python /usr/bin/swift-account-server /etc/swift/account-server.conf

lstat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/mnt/gluster-object/test/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/var/run/swift/db_file.db", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/mnt/gluster-object/test", "user.swift.metadata", 0x0, 0) = 172
getxattr("/mnt/gluster-object/test", "user.swift.metadata", "{"X-Bytes-Used":[0,0],"X-Timestamp":["1461741553.16310",0],"X-Object-Count":[0,0],"X-Type":["Account",0],"X-PUT-Timestamp":["1461741553.16310",0],"X-Container-Count":[5,0]}", 172) = 172
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/mnt/gluster-object/test", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 9
getdents(9, /* 6 entries */, 32768)     = 152
getdents(9, /* 0 entries */, 32768)     = 0
close(9)                                = 0
stat("/mnt/gluster-object/test/c2", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c3", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setxattr("/mnt/gluster-object/test", "user.swift.metadata", "{"X-Bytes-Used":[

lstat("/mnt/gluster-object/test/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/mnt/gluster-object/test/c1", "user.swift.metadata", 0x0, 0) = 148
getxattr("/mnt/gluster-object/test/c1", "user.swift.metadata", "{"X-Object-Count":[5,0],"X-Timestamp":["1462887054.74214",0],"X-Type":["container",0],"X-PUT-Timestamp":["1462887054.77291",0],"X-Bytes-Used":[0,0]}", 148) = 148
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/mnt/gluster-object/test/c1", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 8
getdents(8, /* 7 entries */, 32768)     = 168
getdents(8, /* 0 entries */, 32768)     = 0
close(8)                                = 0
stat("/mnt/gluster-object/test/c1/o1", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o2", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o3", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o4", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o5", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
gettimeofday({1462887445, 549926}, NULL) = 0

Comment 6 errata-xmlrpc 2016-06-23 05:36:31 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2016:1246