X-Copy-From can result in over quota

Bug #1200271 reported by Daniel Klein
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Fix Released
Medium
Fabien Boucher

Bug Description

Since X-Copy-From creates a server-side copy of an object, a copy request should be subject to account and container quota restrictions.

The AccountQuotaMiddleware uses only the Content-Length of the incoming request to decide whether a PUT should be permitted.

However, since the Content-Length of an X-Copy-From PUT request is 0, the account or container quota can be exceeded after the operation is complete.

Changed in swift:
assignee: nobody → Fabien Boucher (fabien-boucher)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (master)

Fix proposed to branch: master
Review: https://review.openstack.org/37260

Changed in swift:
status: New → In Progress
Revision history for this message
Christian Schwede (cschwede) wrote :

Separate bug report for container quotas: #1201875

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (master)

Reviewed: https://review.openstack.org/37260
Committed: http://github.com/openstack/swift/commit/fffc95c3ccb01333becc86e0cb4c67cf5edf9725
Submitter: Jenkins
Branch: master

commit fffc95c3ccb01333becc86e0cb4c67cf5edf9725
Author: Fabien Boucher <email address hidden>
Date: Tue Jul 16 16:39:23 2013 +0200

    Handle X-Copy-From header in account_quota mw

    Content length of the copied object
    is checked before allowing the copy
    request according to the account
    quota set by Reseller.

    Fixes: bug #1200271
    Change-Id: Ie4700f23466dd149ea5a497e6c72438cf52940fd

Changed in swift:
status: In Progress → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (feature/ec)

Fix proposed to branch: feature/ec
Review: https://review.openstack.org/48990

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (feature/ec)
Download full text (17.5 KiB)

Reviewed: https://review.openstack.org/48990
Committed: http://github.com/openstack/swift/commit/175a837befd57b520e28623f0d708d883c023532
Submitter: Jenkins
Branch: feature/ec

commit 4c4a8abaa500d0d3940d81a4eb5ac21215ddc07a
Author: Kun Huang <email address hidden>
Date: Fri Sep 27 15:25:53 2013 +0800

    improve bulk document

    This a very small change which just tell users request url of bulk
    delete request. In original docstrings, it just states the request
    parameters, request body and request method but not request url.

    Change-Id: I0bbc302a0e072910bb58e4814614d7f761433b10

commit df39602c41605c4c68a47c6532a466ccc1a6633d
Author: David Goetz <email address hidden>
Date: Thu Sep 12 07:38:23 2013 -0700

    bulk delete bug with trailing whitespace

    Change-Id: Ia48224a1a187a8ed6b0c9a3c72cac06f084a6fc8

commit d8e0492ea80adae990f35930465d6e905a3be061
Author: Samuel Merritt <email address hidden>
Date: Tue Aug 27 18:00:04 2013 -0700

    Fix internal swift.source tracking.

    In 1.8.0 (Grizzly), your proxy logs would indicate which middleware
    was responsible for an internal request, e.g. TU for tempurl or BD for
    bulk delete. At some point, those all turned into GET_INFO, which does
    not give you any idea which specific middleware was responsible, only
    that it came from a get_account_info/get_container_info call.

    This commit puts it back to how it was in 1.8.0. Also, the
    new-since-1.8.0 function get_object_info() got swift_source plumbing
    added to it, so source tracking for the quota middlewares'
    get_object_info() calls will happen now too.

    Note that due to the new-since-1.8.0 in-environment caching of
    account/container info, you may not see as many lines in the proxy log
    as you would with 1.8.0. This is because there are actually fewer
    internal requests being made.

    Change-Id: I2b2ff7823c612dc7ed7f268da979c4500bbbe911

commit d9d7b2135a7020cdf43172ea4fcf0b1020f49101
Author: Samuel Merritt <email address hidden>
Date: Tue Sep 24 16:43:33 2013 -0700

    Install libffi-dev in SAIO docs.

    If you don't, then newer versions of xattr won't install, and since
    our xattr requirement is simply ">= 0.4" in requirements.txt, this
    affects anyone setting up a new SAIO.

    This happened with xattr 0.7, which was released on 2013-07-19.

    Change-Id: Iaf335fa25a2908953d1fd218158ebedf5d01cc27

commit ce5e810fed8c453f4cd41c3c32162f47cde48f10
Author: Samuel Merritt <email address hidden>
Date: Tue Sep 24 16:20:28 2013 -0700

    Update SAIO doc to have double proxy-logging in pipeline.

    Change-Id: I0a034ca1420761cbf4e35dcea1d9cd18a92f90bd

commit 3e6f9293b8882cecb151e87fe5bfbe24e605b847
Author: Brian D. Burns <email address hidden>
Date: Thu Aug 1 14:50:03 2013 -0400

    update SLO delete error handling

    * ensure all responses are 200 OK
    * report missing sub-SLO manifests or other error messages in bulk
      delete response

    Change-Id: Iaf88c94bc7114ff3c9751f9f31f8f748de911f8a

commit 92ae497800d9e66795346019cf284026a751597e
Author: ZhiQiang Fan <email address hidden>
Date: Fri Sep 20 23:34:06 201...

Changed in swift:
milestone: none → 1.10.0-rc1
Changed in swift:
importance: Undecided → Medium
Thierry Carrez (ttx)
Changed in swift:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in swift:
milestone: 1.10.0-rc1 → 1.10.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.