nova/nova
Dan Smith 0a88916911 Batch results per cell when doing cross-cell listing
This extends the multi_cell_list module with batching support to avoid
querying N*$limit total results when listing resources across cells.
Instead, if our total limit is over a given threshold, we should query
smaller batches in the per-cell thread until we reach the total limit
or are stopped because the sort feeder has found enough across all cells
to satisfy the requirements. In many cases, this can drop the total number
of results we load and process from N*$limit to (best case) $limit+$batch
or (usual case) $limit+(N*$batch).

Since we return a generator from our scatter-gather function, this should
mean we basically finish the scatter immediately after the first batch query
to each cell database, keeping the threads alive until they produce all the
results possible from their cell, or are terminated in the generator loop
by the master loop hitting the total_limit condition. As a result, the
checking over results that we do immediately after the scatter finishes
will no longer do anything since we start running the query code for the
first time as heapq.merge() starts hitting the generators. So, this brings
a query_wrapper() specific to the multi_cell_list code which can mimic the
timeout and error handling abilities of scatter_gather_cells, but inline
as we're processing so that we don't interrupt the merge sort for a
failure.

Related-Bug: #1787977
Change-Id: Iaa4759822e70b39bd735104d03d4deec988d35a1
2018-08-24 13:29:23 -07:00
..
api Make CELL_TIMEOUT a constant 2018-08-22 13:17:35 -07:00
cells
cmd Reload oslo_context after calling monkey_patch() 2018-08-01 13:54:31 +03:00
common
compute Batch results per cell when doing cross-cell listing 2018-08-24 13:29:23 -07:00
conductor Merge "In Python3.7 async is a keyword [1]" 2018-08-03 00:58:06 +00:00
conf Merge "conf: Deprecate 'network_manager'" 2018-08-08 17:40:38 +00:00
console Use nova.db.api directly 2018-07-10 14:56:27 +00:00
consoleauth
db [placement] Move resource_class_cache into placement hierarchy 2018-08-03 14:55:49 +01:00
hacking Use nova.db.api directly 2018-07-10 14:56:27 +00:00
image Implement certificate_utils 2018-06-12 14:44:32 -04:00
ipv6
keymgr
locale Imported Translations from Zanata 2018-08-12 07:33:01 +00:00
network Merge "Assorted cleanups from numa-aware-vswitches series" 2018-07-29 03:41:15 +00:00
notifications Transform metrics.update notification 2018-07-18 09:13:27 +09:00
objects Update really old comments about vmware hosts managing multiple nodes 2018-08-07 18:38:48 -04:00
pci network: update pci request spec to handle trusted tags 2018-05-31 13:55:40 -04:00
policies Remove support for /os-floating-ip-dns REST API 2018-07-18 22:23:45 -04:00
privsep Merge "Revert "Re-using the code of os brick cinder"" 2018-06-19 02:08:35 +00:00
scheduler Make CELL_TIMEOUT a constant 2018-08-22 13:17:35 -07:00
servicegroup Fix service list for disabled compute using MC driver 2018-08-14 14:11:22 +08:00
tests Batch results per cell when doing cross-cell listing 2018-08-24 13:29:23 -07:00
virt Merge "VMware: add missing os types in vSphere sdk 6.5" 2018-08-16 09:04:10 +00:00
vnc
volume Remove unnecessary parameters from create volume API 2018-06-12 12:06:41 +05:30
__init__.py
availability_zones.py
baserpc.py
block_device.py
cache_utils.py
config.py Set default of oslo.privsep.daemon logging to INFO level 2018-07-30 17:06:10 +00:00
context.py Stash the cell uuid on the context when targeting 2018-08-22 13:29:29 -07:00
crypto.py Convert certificate generation to processutils. 2018-05-02 19:18:41 +10:00
debugger.py
exception.py Ironic: report 0 for vcpus/memory_mb/disk_gb resources 2018-08-14 21:32:07 +00:00
exception_wrapper.py Add full traceback to ExceptionPayload in versioned notifications 2018-06-19 16:46:46 +08:00
filters.py
hooks.py
i18n.py
loadables.py
manager.py conf: Remove 'db_driver' config opt 2018-03-16 17:23:16 +00:00
policy.py
profiler.py
quota.py Merge "Avoid joins in _server_group_count_members_by_user" 2018-08-07 23:16:06 +00:00
rc_fields.py Nix unused raise_if_custom_resource_class_pre_v1_1 2018-06-18 19:52:45 +00:00
rpc.py Use oslo.messaging per-call monitoring 2018-06-11 14:44:10 -07:00
safe_utils.py
service.py Deprecate running API services under eventlet 2018-05-16 03:48:32 +00:00
service_auth.py
test.py Remove patching the mock lib 2018-08-10 10:58:52 +02:00
utils.py Adapter raise_exc=False by default 2018-06-22 09:40:33 -05:00
version.py
weights.py
wsgi.py Refactor WSGI apps and utils to limit imports 2018-03-06 22:05:12 +00:00