Bug 894674 - Container listing of objects can starve out other requests being handled by the same worker
Container listing of objects can starve out other requests being handled by t...
Product: Gluster-Swift
Classification: Community
Component: utils (Show other bugs)
x86_64 Linux
low Severity low
: ---
: ---
Assigned To: Michael Adam
Depends On:
Blocks: 903396 978061
  Show dependency treegraph
Reported: 2013-01-12 22:48 EST by Peter Portante
Modified: 2016-11-08 17:26 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Peter Portante 2013-01-12 22:48:01 EST
Container operations, HEAD and GET, from both the REST API and the internal use, require that the total size of the container be calculated. To that end, the Swift layer of Gluster UFO will stat() every file to make that calculation. When containers have large numbers of files, this can take quite some time.

Because the operation is all file system accesses, the co-routine (greenlet) handling this operation does not currently yield, causing other co-routines handling requests to starve.

The proxy-server checks for the existence of the account and container on GET, POST, PUT and DELETE requests for objects, caching the result for 60 seconds by default. This means that once a minute this starvation will occur in practice.
Comment 1 Vijay Bellur 2013-02-04 11:44:34 EST
CHANGE: http://review.gluster.org/4380 (object-storage: yield during directory tree walks) merged in master by Anand Avati (avati@redhat.com)

Note You need to log in before you can comment on or make changes to this bug.