Bug 894674 - Container listing of objects can starve out other requests being handled by the same worker
Summary: Container listing of objects can starve out other requests being handled by t...
Keywords:
Status: MODIFIED
Alias: None
Product: Gluster-Swift
Classification: Community
Component: utils
Version: 0.1
Hardware: x86_64
OS: Linux
low
low
Target Milestone: ---
Assignee: Nobody
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: 903396 978061
TreeView+ depends on / blocked
 
Reported: 2013-01-13 03:48 UTC by Peter Portante
Modified: 2023-01-31 23:41 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description Peter Portante 2013-01-13 03:48:01 UTC
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 16:44:34 UTC
CHANGE: http://review.gluster.org/4380 (object-storage: yield during directory tree walks) merged in master by Anand Avati (avati)


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