swift/test/probe
Tim Burke a1af3811a7 sharding: Cache shard ranges for object writes
Previously, we issued a GET to the root container for every object PUT,
POST, and DELETE. This puts load on the container server, potentially
leading to timeouts, error limiting, and erroneous 404s (!).

Now, cache the complete set of 'updating' shards, and find the shard for
this particular update in the proxy. Add a new config option,
recheck_updating_shard_ranges, to control the cache time; it defaults to
one hour. Set to 0 to fall back to previous behavior.

Note that we should be able to tolerate stale shard data just fine; we
already have to worry about async pendings that got written down with
one shard but may not get processed until that shard has itself sharded
or shrunk into another shard.

Also note that memcache has a default value limit of 1MiB, which may be
exceeded if a container has thousands of shards. In that case, set()
will act like a delete(), causing increased memcache churn but otherwise
preserving existing behavior. In the future, we may want to add support
for gzipping the cached shard ranges as they should compress well.

Change-Id: Ic7a732146ea19a47669114ad5dbee0bacbe66919
Closes-Bug: 1781291
2019-07-11 10:40:38 -07:00
..
__init__.py Add license in swift code file 2017-07-05 10:07:11 +08:00
brain.py Make the decision between primary/handoff sets more obvious 2018-05-22 12:12:42 -07:00
common.py Increase node_timeout in gate 2019-02-12 10:39:17 -06:00
test_account_failures.py Remove executable flag from some test modules 2016-10-31 21:22:10 +00:00
test_account_get_fake_responses_match.py Remove executable flag from some test modules 2016-10-31 21:22:10 +00:00
test_account_reaper.py Follow up delayed reap probe test 2016-08-18 14:08:56 +01:00
test_container_failures.py Increase node_timeout in gate 2019-02-12 10:39:17 -06:00
test_container_merge_policy_index.py add symlink to probetest for reconciler 2017-12-14 12:16:39 -08:00
test_container_sync.py Symlink implementation. 2017-12-13 21:26:12 +00:00
test_db_replicator.py Apply remote metadata in _handle_sync_response 2018-03-06 19:52:59 +00:00
test_empty_device_handoff.py Remove executable flag from some test modules 2016-10-31 21:22:10 +00:00
test_object_async_update.py No longer import nose 2017-11-07 15:39:25 +11:00
test_object_conditional_requests.py Make If-None-Match:* work properly with 0-byte PUTs 2018-02-26 13:12:44 +00:00
test_object_expirer.py Refactoring, test infrastructure changes and cleanup 2018-05-15 18:18:25 +01:00
test_object_failures.py Remove executable flag from some test modules 2016-10-31 21:22:10 +00:00
test_object_handoff.py Return 404 on a GET if tombstone is newer 2017-10-24 14:35:06 -04:00
test_object_metadata_replication.py Remove all post_as_copy related code and configes 2017-09-16 05:50:41 +00:00
test_object_partpower_increase.py Add support to increase object ring partition power 2017-06-15 15:08:48 -07:00
test_reconstructor_rebuild.py Rebuild frags for unmounted disks 2019-02-08 18:04:55 +00:00
test_reconstructor_revert.py Tolerate swiftclient *not* mutatinng args 2017-08-25 12:27:41 -07:00
test_replication_servers_working.py Stop overwriting reserved term 2019-03-12 08:53:18 +00:00
test_sharder.py sharding: Cache shard ranges for object writes 2019-07-11 10:40:38 -07:00
test_signals.py Use latest eventlet in probe tests 2018-09-19 14:59:32 -07:00