git/reftable
Meet Soni 0e1b9c5eed reftable: adapt write_object_record() to propagate block_writer_add() errors
Previously, write_object_record() would flush the current block and retry
appending the record whenever block_writer_add() returned any nonzero
error. This forced an assumption that every failure meant the block was
full, even when errors such as memory allocation or I/O failures occurred.

Update the write_object_record() to inspect the error code returned by
block_writer_add() and flush and reinitialize the writer iff the
error is REFTABLE_ENTRY_TOO_BIG_ERROR. For any other error, immediately
propagate it.

If the flush and reinitialization still fail with
REFTABLE_ENTRY_TOO_BIG_ERROR, reset the record's offset length to zero
before a final attempt.

All call sites now handle various error codes returned by
block_writer_add().

Signed-off-by: Meet Soni <meetsoni3017@gmail.com>
Acked-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-03-21 01:51:08 -07:00
..
LICENSE
…
basics.c
…
basics.h
…
block.c reftable: propagate specific error codes in block_writer_add() 2025-03-21 01:51:07 -07:00
block.h reftable: propagate specific error codes in block_writer_add() 2025-03-21 01:51:07 -07:00
blocksource.c reftable/blocksource: adjust `read_block()` to return `ssize_t` 2025-01-21 14:20:30 -08:00
blocksource.h
…
constants.h
…
error.c
…
iter.c
…
iter.h
…
merged.c
…
merged.h
…
pq.c
…
pq.h
…
reader.c reftable: release name on reftable_reader_new() error 2025-03-04 09:21:39 -08:00
reader.h reftable/blocksource: adjust `read_block()` to return `ssize_t` 2025-01-21 14:20:30 -08:00
record.c reftable: propagate specific error codes in block_writer_add() 2025-03-21 01:51:07 -07:00
record.h
…
reftable-basics.h
…
reftable-blocksource.h reftable/blocksource: adjust `read_block()` to return `ssize_t` 2025-01-21 14:20:30 -08:00
reftable-error.h reftable: prevent 'update_index' changes after adding records 2025-01-22 09:51:36 -08:00
reftable-iterator.h
…
reftable-merged.h
…
reftable-reader.h
…
reftable-record.h
…
reftable-stack.h
…
reftable-writer.h Merge branch 'kn/reflog-migration-fix-followup' 2025-02-14 17:53:48 -08:00
stack.c Merge branch 'kn/reflog-migration-fix-followup' 2025-02-14 17:53:48 -08:00
stack.h
…
system.c
…
system.h Merge branch 'ps/zlib-ng' 2025-02-06 14:56:45 -08:00
tree.c
…
tree.h
…
writer.c reftable: adapt write_object_record() to propagate block_writer_add() errors 2025-03-21 01:51:08 -07:00
writer.h
…