Winery: Implement asynchronous packing
Highlights of this pile of changes, in commit order:
- avoid double-init() in WineryWriter (would create new shards and never use them)
- replace python-sh with direct calls to subprocess
- some hardening of the test fixtures for postgresql and ceph rbd so that they teardown properly in "all" (famous last words) cases
- cleaner separation of parameters in the benchmark code (between ro workers and rw workers)
- implement shard lifecycle with an enum instead of a pair of booleans
- add an asynchronous packing function
- hook the asynchronous packing into benchmarks
A few commits to improve mypy coverage have been sprinkled throughout.
TODO:
-
add a CLI entry point for packing -
future: get rid of all the Winery classes passing around bare kwargs dicts.
Implements #4741 (closed)
Edited by Nicolas Dandrimont