[PATCH 0/8] reftable: small set of fixes
Hi,
while working on the reftable backend I've hit several smaller issues in the reftable library, which this patch series addresses.
We probably want to refactor t0032-reftable-unittest.sh to plug into the new unit test architecture eventually, but for now I refrained from doing so. I care more about getting things to a working state right now, but I or somebody else from the Gitaly team will probably pick this topic up later in this release cycle.
One issue I had was that this patch series starts to use more of the Git infrastructure. Back when the library was introduced that there was some discussion around whether it should work standalone or not, but if I remember correctly the outcome was that it's okay to use internals like e.g. `strbuf`. And while things like `read_in_full()` and related are trivial wrappers, this patch series start to hook into the tempfiles interface which I really didn't want to reimplement.
It's a bit unfortunate that we don't yet have good test coverage as there are no end-to-end tests, and most of the changes I did are not easily testable in unit tests. So until the reftable backend gets submitted you'll have to trust my reasoning as layed out in the commit messages that the changes actually improve things.
Patrick
Patrick Steinhardt (8):
reftable: wrap EXPECT macros in do/while
reftable: handle interrupted reads
reftable: handle interrupted writes
reftable/stack: verify that `reftable_stack_add()` uses
auto-compaction
reftable/stack: perform auto-compaction with transactional interface
reftable/stack: reuse buffers when reloading stack
reftable/merged: reuse buffer to compute record keys
reftable/stack: fix stale lock when dyingreftable/blocksource.c | 2 +- reftable/merged.c | 20 ++++---- reftable/stack.c | 71 ++++++++++---------------- reftable/stack_test.c | 105 +++++++++++++++++++++++++++++++++++++- reftable/test_framework.h | 58 +++++++++++---------- 5 files changed, 174 insertions(+), 82 deletions(-)
-- 2.42.0