Git development
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Justin Tobler <jltobler@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 03/16] odb: fix unnecessary call to `find_cached_object()`
Date: Thu, 9 Apr 2026 07:22:49 +0200	[thread overview]
Message-ID: <adc3qfDPinq1aakq@pks.im> (raw)
In-Reply-To: <adbDpPQgvPfctxQS@denethor>

On Wed, Apr 08, 2026 at 04:13:45PM -0500, Justin Tobler wrote:
> On 26/04/03 08:01AM, Patrick Steinhardt wrote:
> > diff --git a/odb.c b/odb.c
> > index d321242353..21cdedc31c 100644
> > --- a/odb.c
> > +++ b/odb.c
> > @@ -774,8 +774,7 @@ int odb_pretend_object(struct object_database *odb,
> >  	char *co_buf;
> >  
> >  	hash_object_file(odb->repo->hash_algo, buf, len, type, oid);
> > -	if (odb_has_object(odb, oid, 0) ||
> > -	    find_cached_object(odb, oid))
> > +	if (odb_has_object(odb, oid, 0))
> 
> Nice, odb_has_object() does indeed already check the object cache so
> that makes the explicit find_cached_object() redundant.
> 
> If a future where temporary objects could be written to the inmemory ODB
> source, would there ever be a reason for odb_has_object() to
> differentiate between inmemory and real objects?

We could in theory just append the in-memory source to the normal list
of sources, and that would ensure that all the usual operations would
know to also consider this source. But there's a couple of points that
speak against it, at least for now:

  - Callers that explicitly want to explicitly write temporary objects
    need to have a handle to the in-memory source. That handle would be
    hard to obtain if we were to only store the source in the list of
    sources.

  - It would be a change in behaviour if functions like
    `odb_for_each_object()` were to also enumerate in-memory objects.

The former one could be solved by having both the direct pointer and
keep the source in the list. The latter can be solved by having a
separate flag for `odb_for_each_object()` that tells the ODB that we
want to exclude/include in-memory objects.

But overall it feels like this would only complicate things without much
of a tangible benefit.

Patrick

  reply	other threads:[~2026-04-09  5:22 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-03  6:01 [PATCH 00/16] odb: introduce "inmemory" source Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 01/16] " Patrick Steinhardt
2026-04-08 21:00   ` Justin Tobler
2026-04-09  5:22     ` Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 02/16] odb/source-inmemory: implement `free()` callback Patrick Steinhardt
2026-04-08 21:05   ` Justin Tobler
2026-04-03  6:01 ` [PATCH 03/16] odb: fix unnecessary call to `find_cached_object()` Patrick Steinhardt
2026-04-08 21:13   ` Justin Tobler
2026-04-09  5:22     ` Patrick Steinhardt [this message]
2026-04-03  6:01 ` [PATCH 04/16] odb/source-inmemory: implement `read_object_info()` callback Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 05/16] odb/source-inmemory: implement `read_object_stream()` callback Patrick Steinhardt
2026-04-08 21:24   ` Justin Tobler
2026-04-09  5:22     ` Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 06/16] odb/source-inmemory: implement `write_object()` callback Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 07/16] odb/source-inmemory: implement `write_object_stream()` callback Patrick Steinhardt
2026-04-03 22:11   ` Junio C Hamano
2026-04-08  8:22     ` Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 08/16] cbtree: allow using arbitrary wrapper structures for nodes Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 09/16] oidtree: add ability to store data Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 10/16] odb/source-inmemory: convert to use oidtree Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 11/16] odb/source-inmemory: implement `for_each_object()` callback Patrick Steinhardt
2026-04-03  6:01 ` [PATCH 12/16] odb/source-inmemory: implement `find_abbrev_len()` callback Patrick Steinhardt
2026-04-03  6:02 ` [PATCH 13/16] odb/source-inmemory: implement `count_objects()` callback Patrick Steinhardt
2026-04-03  6:02 ` [PATCH 14/16] odb/source-inmemory: implement `freshen_object()` callback Patrick Steinhardt
2026-04-03  6:02 ` [PATCH 15/16] odb/source-inmemory: stub out remaining functions Patrick Steinhardt
2026-04-03  6:02 ` [PATCH 16/16] odb: generic inmemory source Patrick Steinhardt
2026-04-03 15:41 ` [PATCH 00/16] odb: introduce "inmemory" source Junio C Hamano
2026-04-08  8:22   ` Patrick Steinhardt
2026-04-08 21:48     ` Junio C Hamano
2026-04-09  5:22       ` Patrick Steinhardt
2026-04-09 13:46         ` Junio C Hamano
2026-04-10  4:53           ` Patrick Steinhardt
2026-04-09  7:24 ` [PATCH v2 00/17] odb: introduce "in-memory" source Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 01/17] " Patrick Steinhardt
2026-04-09  9:26     ` Karthik Nayak
2026-04-09 10:41       ` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 02/17] odb/source-inmemory: implement `free()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 03/17] odb: fix unnecessary call to `find_cached_object()` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 04/17] odb/source-inmemory: implement `read_object_info()` callback Patrick Steinhardt
2026-04-09  9:40     ` Karthik Nayak
2026-04-09 10:41       ` Patrick Steinhardt
2026-04-09 11:22         ` Karthik Nayak
2026-04-09  7:24   ` [PATCH v2 05/17] odb/source-inmemory: implement `read_object_stream()` callback Patrick Steinhardt
2026-04-09  9:49     ` Karthik Nayak
2026-04-09 10:41       ` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 06/17] odb/source-inmemory: implement `write_object()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 07/17] " Patrick Steinhardt
2026-04-09 10:27     ` Karthik Nayak
2026-04-09 10:41       ` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 08/17] odb/source-inmemory: implement `write_object_stream()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 09/17] cbtree: allow using arbitrary wrapper structures for nodes Patrick Steinhardt
2026-04-09 11:36     ` Karthik Nayak
2026-04-09 11:46       ` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 10/17] oidtree: add ability to store data Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 11/17] odb/source-inmemory: convert to use oidtree Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 12/17] odb/source-inmemory: implement `for_each_object()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 13/17] odb/source-inmemory: implement `find_abbrev_len()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 14/17] odb/source-inmemory: implement `count_objects()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 15/17] odb/source-inmemory: implement `freshen_object()` callback Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 16/17] odb/source-inmemory: stub out remaining functions Patrick Steinhardt
2026-04-09 19:39     ` Junio C Hamano
2026-04-10  4:53       ` Patrick Steinhardt
2026-04-09  7:24   ` [PATCH v2 17/17] odb: generic in-memory source Patrick Steinhardt
2026-04-09 11:44   ` [PATCH v2 00/17] odb: introduce "in-memory" source Karthik Nayak
2026-04-09 11:48     ` Patrick Steinhardt
2026-04-10 12:12 ` [PATCH v3 " Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 01/17] " Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 02/17] odb/source-inmemory: implement `free()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 03/17] odb: fix unnecessary call to `find_cached_object()` Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 04/17] odb/source-inmemory: implement `read_object_info()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 05/17] odb/source-inmemory: implement `read_object_stream()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 06/17] odb/source-inmemory: implement `write_object()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 07/17] odb/source-inmemory: implement `write_object_stream()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 08/17] cbtree: allow using arbitrary wrapper structures for nodes Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 09/17] oidtree: add ability to store data Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 10/17] odb/source-inmemory: convert to use oidtree Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 11/17] odb/source-inmemory: implement `for_each_object()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 12/17] odb/source-inmemory: implement `find_abbrev_len()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 13/17] odb/source-inmemory: implement `count_objects()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 14/17] odb/source-inmemory: implement `freshen_object()` callback Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 15/17] odb/source-inmemory: stub out remaining functions Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 16/17] odb: generic in-memory source Patrick Steinhardt
2026-04-10 12:12   ` [PATCH v3 17/17] t/unit-tests: add tests for the in-memory object source Patrick Steinhardt
2026-04-14  8:45     ` Karthik Nayak
2026-04-14  8:27   ` [PATCH v3 00/17] odb: introduce "in-memory" source Karthik Nayak

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=adc3qfDPinq1aakq@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=jltobler@gmail.com \
    /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