git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] midx.c: clear auxiliary MIDX files first
@ 2022-10-25 18:25 Taylor Blau
  2022-10-26  5:41 ` Jeff King
  0 siblings, 1 reply; 5+ messages in thread
From: Taylor Blau @ 2022-10-25 18:25 UTC (permalink / raw)
  To: git, git; +Cc: Junio C Hamano, Derrick Stolee, Victoria Dye

Since they were added in c528e17966 (pack-bitmap: write multi-pack
bitmaps, 2021-08-31), the routine to remove MIDXs removed the
multi-pack-index file itself before removing its associated .bitmap and
.rev file(s), if any.

This creates a window where a MIDX's .bitmap file exists without its
corresponding MIDX. If a reader tries to load a MIDX bitmap during that
time, they will get a warning, and the MIDX bitmap code will gracefully
degrade.

Remove this window entirely by removing the MIDX last, and removing its
auxiliary files first.

The order here is important, too. We remove the MIDX's .bitmap file
ahead of its .rev, since callers try and read the .bitmap first. The
.rev file is no longer generated by modern versions of Git, but cleaning
up old ones generated by previous versions of Git is still important to
do.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 midx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/midx.c b/midx.c
index 3a8dcfe98e..994129aecd 100644
--- a/midx.c
+++ b/midx.c
@@ -1619,12 +1619,12 @@ void clear_midx_file(struct repository *r)
 		r->objects->multi_pack_index = NULL;
 	}
 
-	if (remove_path(midx.buf))
-		die(_("failed to clear multi-pack-index at %s"), midx.buf);
-
 	clear_midx_files_ext(r->objects->odb->path, ".bitmap", NULL);
 	clear_midx_files_ext(r->objects->odb->path, ".rev", NULL);
 
+	if (remove_path(midx.buf))
+		die(_("failed to clear multi-pack-index at %s"), midx.buf);
+
 	strbuf_release(&midx);
 }
 
-- 
2.38.0.16.g393fd4c6db

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-10-27 20:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-25 18:25 [PATCH] midx.c: clear auxiliary MIDX files first Taylor Blau
2022-10-26  5:41 ` Jeff King
2022-10-26 13:31   ` Derrick Stolee
2022-10-26 19:59     ` Taylor Blau
2022-10-27 20:28     ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).