git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 7/9] commit-graph: drop count_distinct_commits() function

From
Derrick Stolee <stolee@gmail.com>
Date
Dec 4, 2020, 20:47 UTC
Message-ID
<05c616b0-138a-3e30-5a71-4ba9fb26e6ef@gmail.com>
In-Reply-To
<X8qfRDsfLYTDL3HV@coredump.intra.peff.net>
On 12/4/2020 3:42 PM, Jeff King wrote:
Show 32 quoted lines
> On Fri, Dec 04, 2020 at 03:06:24PM -0500, Derrick Stolee wrote:
> 
>> On 12/4/2020 1:56 PM, Jeff King wrote:
>>> That turns out not to be a problem, though. The only things we do with
>>> the count are:
>>>
>>>   - check if our count will overflow our data structures. But the limit
>>>     there is 2^31 commits, so it's not likely to happen in practice.
>>
>> You do point out that you are removing this logic, done in this
>> if statement:
>>
>>> -	if (count_distinct >= GRAPH_EDGE_LAST_MASK) {
>>> -		error(_("the commit graph format cannot write %d commits"), count_distinct);
>>> -		res = -1;
>>> -		goto cleanup;
>>> -	}
>>
>> What is the harm of keeping this? I know it is very unlikely, but
>> I'd rather fail here than write a commit-graph that gets parsed as
>> garbage.
> 
> I agree it's important to have. But this one is redundant. Look a few
> lines below this hunk, and we have:
> 
> 	copy_oids_to_commits(ctx);
> 
> 	if (ctx->commits.nr >= GRAPH_EDGE_LAST_MASK) {
> 		error(_("too many commits to write graph"));
> 		res = -1;
> 		goto cleanup;
> 	}
Yep, my fault for not looking further in the context of your patch.
Show 11 quoted lines
> So before we were counting distinct commits, checking that our count
> fits, and then _ignoring_ that count in order to create the actual list
> of commits, and then checking that the actual list's count fits. We only
> need one of those checks, and the important one is the one from the
> actual list (they _should_ match, but due to the bug, they sometimes
> didn't).
> 
> My "not likely to happen in practice" is not about the quality of the
> check, but rather that being off by one would never matter in practice.
> 
> Does that make more sense?
Makes sense to me. No need to change this patch at all.

Thanks, -Stolee

Previous: Jeff KingNext: Jeff King
Message 20 of 40 in “misc commit-graph and oid-array cleanups”
  1. 0/9 misc commit-graph and oid-array cleanupsJeff King, Dec 4, 2020
  2. 1/9 oid-array.h: drop sha1 mention from header guardJeff King, Dec 4, 2020
  3. 2/9 t0064: drop sha1 mention from filenameJeff King, Dec 4, 2020
  4. 3/9 t0064: make duplicate tests more robustJeff King, Dec 4, 2020
  5. 4/9 cache.h: move hash/oid functions to hash.hJeff King, Dec 4, 2020
  6. 5/9 oid-array: make sort function publicJeff King, Dec 4, 2020
  7. 6/9 oid-array: provide a for-loop iteratorJeff King, Dec 4, 2020
  8. Taylor BlauDec 4, 2020
  9. Taylor BlauDec 4, 2020
  10. Jeff KingDec 4, 2020
  11. Jeff KingDec 4, 2020
  12. Eric SunshineDec 4, 2020
  13. Jeff KingDec 4, 2020
  14. Eric SunshineDec 4, 2020
  15. Junio C HamanoDec 4, 2020
  16. Jeff KingDec 7, 2020
  17. 7/9 commit-graph: drop count_distinct_commits() functionJeff King, Dec 4, 2020
  18. Derrick StoleeDec 4, 2020
  19. Jeff KingDec 4, 2020
  20. Derrick StoleeDec 4, 2020
  21. Jeff KingDec 4, 2020
  22. Derrick StoleeDec 4, 2020
  23. Ævar Arnfjörð BjarmasonDec 5, 2020
  24. Jeff KingDec 7, 2020
  25. 8/9 commit-graph: replace packed_oid_list with oid_arrayJeff King, Dec 4, 2020
  26. Taylor BlauDec 4, 2020
  27. 9/9 commit-graph: use size_t for array allocation and indexingJeff King, Dec 4, 2020
  28. Taylor BlauDec 4, 2020
  29. Derrick StoleeDec 4, 2020
  30. 0/9 misc commit-graph and oid-array cleanupsJeff King, Dec 7, 2020
  31. 1/9 oid-array.h: drop sha1 mention from header guardJeff King, Dec 7, 2020
  32. 2/9 t0064: drop sha1 mention from filenameJeff King, Dec 7, 2020
  33. 3/9 t0064: make duplicate tests more robustJeff King, Dec 7, 2020
  34. 4/9 cache.h: move hash/oid functions to hash.hJeff King, Dec 7, 2020
  35. 5/9 oid-array: make sort function publicJeff King, Dec 7, 2020
  36. 6/9 oid-array: provide a for-loop iteratorJeff King, Dec 7, 2020
  37. 7/9 commit-graph: drop count_distinct_commits() functionJeff King, Dec 7, 2020
  38. 8/9 commit-graph: replace packed_oid_list with oid_arrayJeff King, Dec 7, 2020
  39. 9/9 commit-graph: use size_t for array allocation and indexingJeff King, Dec 7, 2020
  40. Derrick StoleeDec 7, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.