Re: [PATCH 1/7] refs/reftable: reload correct stack when creating reflog iter
- From
Josh Steadmon <steadmon@google.com>
- Date
- Mar 11, 2024, 18:34 UTC
- Message-ID
- <Ze9Or6vctPJGOV_l@google.com>
- In-Reply-To
- <b0414221ecad1920c84f4ab498e55edec57f06b6.1709640322.git.ps@pks.im>
On 2024.03.05 13:10, Patrick Steinhardt wrote:
Show 28 quoted lines
> When creating a new reflog iterator, we first have to reload the stack > that the iterator is being created. This is done so that any concurrent > writes to the stack are reflected. But `reflog_iterator_for_stack()` > always reloads the main stack, which is wrong. > > Fix this and reload the correct stack. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > refs/reftable-backend.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c > index 249a618b5a..f04be942ac 100644 > --- a/refs/reftable-backend.c > +++ b/refs/reftable-backend.c > @@ -1682,7 +1682,7 @@ static struct reftable_reflog_iterator *reflog_iterator_for_stack(struct reftabl > if (ret) > goto done; > > - ret = reftable_stack_reload(refs->main_stack); > + ret = reftable_stack_reload(stack); > if (ret < 0) > goto done; > > -- > 2.44.0 >
Is it possible to write a test to demonstrate the bug that was fixed here, or is it too much of a race condition to reliably trigger?