Re: [PATCH v2 4/7] reftable: avoid writing empty keys at the block layer
- From
Han-Wen Nienhuys <hanwen@google.com>
- Date
- Feb 21, 2022, 14:32 UTC
- Message-ID
- <CAFQ2z_OkZwvvxY=9A8cVGVEyM49oWXQA_4zngu1QnKce-zb2gQ@mail.gmail.com>
- In-Reply-To
- <xmqqee4159r6.fsf@gitster.g>
On Fri, Feb 18, 2022 at 12:55 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> > @@ -358,6 +363,8 @@ int block_reader_first_key(struct block_reader *br, struct strbuf *key) > > int n = reftable_decode_key(key, &extra, empty, in); > > if (n < 0) > > return n; > > + if (!key->len) > > + return -1; > > It is curious that this gets a different error out of the same > sequence, i.e. decode-key did not return an error but the length of > the key happens to be 0, not FORMAT_ERROR.
fixed.
Show 18 quoted lines
> > --- a/reftable/writer.c
> > +++ b/reftable/writer.c
> > @@ -240,14 +240,13 @@ static int writer_add_record(struct reftable_writer *w,
> >
> > writer_reinit_block_writer(w, reftable_record_type(rec));
> > err = block_writer_add(w->block_writer, rec);
> > - if (err < 0) {
> > + if (err == -1) {
> > /* we are writing into memory, so an error can only mean it
> > * doesn't fit. */
> > err = REFTABLE_ENTRY_TOO_BIG_ERROR;
> > goto done;
> > }
> >
> > - err = 0;
>
> Is this "doesn't fit" related to "we catch 0-length keys", or an
> unrelated fix was included in this step by "rebase -i" mistake?We don't want to reinterpret API_ERROR (from block_writer_add) as ENTRY_TOO_BIG_ERROR, so we have to tweak the condition here.
-- Han-Wen Nienhuys - Google Munich I work 80%. Don't expect answers from me on Fridays. -- Google Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Paul Manicle, Liana Sebastian