git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Subject: [PATCH 04/10] commit-graph: move slab-clearing to close_commit_graph()
Date: Tue, 3 Oct 2023 16:27:52 -0400	[thread overview]
Message-ID: <20231003202752.GD7812@coredump.intra.peff.net> (raw)
In-Reply-To: <20231003202504.GA7697@coredump.intra.peff.net>

When closing and freeing a commit-graph, the main entry point is
close_commit_graph(), which then uses close_commit_graph_one() to
recurse through the base_graph links and free each one.

Commit 957ba814bf (commit-graph: when closing the graph, also release
the slab, 2021-09-08) put the call to clear the slab into the recursive
function, but this is pointless: there's only a single global slab
variable. It works OK in practice because clearing the slab is
idempotent, but it makes the code harder to reason about and refactor.

Move it into the parent function so it's only called once (and there are
no other direct callers of the recursive close_commit_graph_one(), so we
are not hurting them).

Signed-off-by: Jeff King <peff@peff.net>
---
 commit-graph.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/commit-graph.c b/commit-graph.c
index 5e8a3a5085..dc54ef4776 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -728,13 +728,13 @@ static void close_commit_graph_one(struct commit_graph *g)
 	if (!g)
 		return;
 
-	clear_commit_graph_data_slab(&commit_graph_data_slab);
 	close_commit_graph_one(g->base_graph);
 	free_commit_graph(g);
 }
 
 void close_commit_graph(struct raw_object_store *o)
 {
+	clear_commit_graph_data_slab(&commit_graph_data_slab);
 	close_commit_graph_one(o->commit_graph);
 	o->commit_graph = NULL;
 }
-- 
2.42.0.810.gbc538a0ee6


  parent reply	other threads:[~2023-10-03 20:27 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-03 20:25 [PATCH 0/10] some commit-graph leak fixes Jeff King
2023-10-03 20:26 ` [PATCH 01/10] t6700: mark test as leak-free Jeff King
2023-10-05 17:40   ` Taylor Blau
2023-10-03 20:26 ` [PATCH 02/10] commit-reach: free temporary list in get_octopus_merge_bases() Jeff King
2023-10-03 20:27 ` [PATCH 03/10] merge: free result of repo_get_merge_bases() Jeff King
2023-10-05 17:42   ` Taylor Blau
2023-10-03 20:27 ` Jeff King [this message]
2023-10-05 17:42   ` [PATCH 04/10] commit-graph: move slab-clearing to close_commit_graph() Taylor Blau
2023-10-03 20:29 ` [PATCH 05/10] commit-graph: free all elements of graph chain Jeff King
2023-10-03 20:30 ` [PATCH 06/10] commit-graph: delay base_graph assignment in add_graph_to_chain() Jeff King
2023-10-05 17:44   ` Taylor Blau
2023-10-03 20:30 ` [PATCH 07/10] commit-graph: free graph struct that was not added to chain Jeff King
2023-10-03 20:30 ` [PATCH 08/10] commit-graph: free write-context entries before overwriting Jeff King
2023-10-05 17:51   ` Taylor Blau
2023-10-05 21:03     ` Jeff King
2023-10-03 20:31 ` [PATCH 09/10] commit-graph: free write-context base_graph_name during cleanup Jeff King
2023-10-03 20:31 ` [PATCH 10/10] commit-graph: clear oidset after finishing write Jeff King
2023-10-04  1:33 ` Is SANITIZE=leak make test unreliable for anyone else? Eric W. Biederman
2023-10-04 13:21   ` Jeff King
2023-10-04 14:19     ` Eric W. Biederman
2023-10-04 14:47       ` Jeff King
2023-10-04 15:38         ` Eric W. Biederman
2023-10-05 17:52 ` [PATCH 0/10] some commit-graph leak fixes Taylor Blau
2023-10-06  0:39   ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231003202752.GD7812@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).