]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
On Volume list only retrieve needed data from DB
authorGorka Eguileor <geguileo@redhat.com>
Wed, 12 Aug 2015 17:09:53 +0000 (19:09 +0200)
committerGorka Eguileor <geguileo@redhat.com>
Fri, 14 Aug 2015 08:05:47 +0000 (10:05 +0200)
commit28879f9a78020a64992f278edd8692ecbbd4a56c
tree599f5eabb547b4a619e906f954a868293524def9
parent7e84f149e8194e93b109617843e061720ee1930d
On Volume list only retrieve needed data from DB

Currently when there is no limit set on a volume list query we retrieve
all volumes and then limit them locally using osapi_max_limit.  Similar
thing happens when we are using the marker for next pages, we get all
volumes from that marker until the last volume and then limit it
locally.

We should be limiting it on the DB side so we only retrieve the data we
are actually going to return to the API caller.

This patch always limits the data retrieved from the DB and for the
offset to keep working as it was before we need to do the offset on the
DB side as well.

For reference some tests were performed:

On a deployment with 60,000 volumes, 370,000 volume_metadata items and
240,000 volume_glance_metadata items in cinder db.  Before the patch
this will use nearly 10G memory.  With the patch we will just use about
500M.

Co-Authored-By: wangxiyuan <wangxiyuan@huawei.com>
Closes-bug:#1483165i
Change-Id: Ie903e546074fe118299e8e1acfb9c88c8a10d78c
cinder/api/common.py
cinder/api/v2/views/volumes.py
cinder/api/v2/volumes.py
cinder/common/sqlalchemyutils.py
cinder/db/api.py
cinder/db/sqlalchemy/api.py
cinder/tests/unit/api/test_common.py
cinder/tests/unit/api/v1/test_volumes.py
cinder/tests/unit/api/v2/stubs.py
cinder/tests/unit/api/v2/test_volumes.py
cinder/volume/api.py