[PATCH v4 0/3] reftable: graceful concurrent writes
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Sep 24, 2024, 05:32 UTC
- Message-ID
- <cover.1727155858.git.ps@pks.im>
- In-Reply-To
- <cover.1726578382.git.ps@pks.im>
Hi,
this is the fourth version of my patch series that implements for graceful concurrent writes with the reftable backend.
There's only a single change, namely a fix to the type used by the newly introduced `flags` field.
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 | 8 ++++ refs/reftable-backend.c | 13 +++++- reftable/reftable-stack.h | 13 +++++- reftable/reftable-writer.h | 11 +++++ reftable/stack.c | 38 ++++++++++++------ t/t0610-reftable-basics.sh | 58 ++++++++++++++++++++++++++ t/unit-tests/t-reftable-stack.c | 67 ++++++++++++++++++++++++++++++- 7 files changed, 189 insertions(+), 19 deletions(-)
Range-diff against v3:
1: 77cffd3b1eb = 1: 77cffd3b1eb refs/reftable: introduce "reftable.lockTimeout"
2: 6130565498e ! 2: 81a836062e9 reftable/stack: allow locking of outdated stacks
@@ reftable/reftable-stack.h: uint64_t reftable_stack_next_update_index(struct reft
int reftable_stack_new_addition(struct reftable_addition **dest,
- struct reftable_stack *st);
+ struct reftable_stack *st,
-+ int flags);
++ unsigned int flags);
/* Adds a reftable to transaction. */
int reftable_addition_add(struct reftable_addition *add,
@@ reftable/stack.c: struct reftable_addition {
static int reftable_stack_init_addition(struct reftable_addition *add,
- struct reftable_stack *st)
+ struct reftable_stack *st,
-+ int flags)
++ unsigned int flags)
{
struct strbuf lock_file_name = STRBUF_INIT;
int err;
@@ reftable/stack.c: int reftable_addition_commit(struct reftable_addition *add)
int reftable_stack_new_addition(struct reftable_addition **dest,
- struct reftable_stack *st)
+ struct reftable_stack *st,
-+ int flags)
++ unsigned int flags)
{
int err = 0;
struct reftable_addition empty = REFTABLE_ADDITION_INIT;
3: 25d4e513a36 = 3: 9ce2d18dff2 refs/reftable: reload locked stack when preparing transaction-- 2.46.0.551.gc5ee8f2d1c.dirty