[PATCH v2 0/3] reftable: graceful concurrent writes
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Sep 18, 2024, 04:32 UTC
- Message-ID
- <cover.1726633812.git.ps@pks.im>
- In-Reply-To
- <cover.1726578382.git.ps@pks.im>
Hi,
this is the second patch series that makes graceful concurrent writes work with the reftable backend.
There is only a single change compared to v1, namely a fix to the docs to mention the right default timeout value.
Thanks!
Patrick
Patrick Steinhardt (3): refs/reftable: introduce "reftable.lockTimeout" reftable/stack: allow locking of outdated stacks refs/reftable: reload locked stack when preparing transaction
Documentation/config/reftable.txt | 7 ++++ refs/reftable-backend.c | 9 ++++- reftable/reftable-stack.h | 13 +++++- reftable/reftable-writer.h | 8 ++++ reftable/stack.c | 38 ++++++++++++------ t/t0610-reftable-basics.sh | 58 ++++++++++++++++++++++++++ t/unit-tests/t-reftable-stack.c | 67 ++++++++++++++++++++++++++++++- 7 files changed, 181 insertions(+), 19 deletions(-)
Range-diff against v1:
1: ca3eab99f7e ! 1: 700a35df125 refs/reftable: introduce "reftable.lockTimeout"
@@ Documentation/config/reftable.txt: reftable.geometricFactor::
+ Whenever the reftable backend appends a new table to the stack, it has
+ to lock the central "tables.list" file before updating it. This config
+ controls how long the process will wait to acquire the lock in case
-+ another process has already acquired it. Default is 1000 (i.e., retry
-+ for 1 second).
++ another process has already acquired it. Default is 100 (i.e., retry
++ for 100ms).
## refs/reftable-backend.c ##
@@ refs/reftable-backend.c: static int reftable_be_config(const char *var, const char *value,
2: cd65e6d57b0 = 2: f4be0966e17 reftable/stack: allow locking of outdated stacks
3: 37ec3acbff0 = 3: 111b497ef17 refs/reftable: reload locked stack when preparing transaction-- 2.46.0.551.gc5ee8f2d1c.dirty