Subject: bug#66268: Guix makes invalid assumptions regarding guile-git guarantees leading to guix pull failing

From: Tomas Volf <[email-masked]>
Date: Wed, 16 Apr 2025 00:01:57 +0200

Ludovic Courtès <[email-masked]> writes:

> Hi Tomas!
>
> Tomas Volf <[email-masked]> writes:
>
>> So, the good news is that it seems to work, the checks at the start of
>> the script now pass.  Full output from both runs (the current guile-git
>> 0.9.0 and the commit being tested) are attached.
>>
>> However, now the bad news.  The performance of the new version is
>> atrocious.  Run from the previous version finished in slightly over 6
>> minutes (6:13.37), run from the commit above *did not finish* after 16
>> hours (16:05:27) and I had to kill it.  So we are looking at a slowdown
>> of *at least* 155.3x, probably significantly worse (see below).
>
> Ouch this is terrible—and shows just how naïve I was. :-)
>
> Taking a step back, I think we can sidestep the issue entirely.  Based
> on 45mg’s initial work, I added (git graph).  This includes
> ‘graph-descendant?’, which is all we need in (guix git).
>
> So I think I’ll revert the offending commit
> (cd91dc908ac4b215bc87a97455ff64ed4d89b721) and then come up with a patch
> in Guix to use ‘graph-descendant?’ instead of our home-made graph
> traversal code.
>
> How does that sound?

I think that sounds like a great plan.  Using the new graph-descendant?
should make the code both correct and faster, so win-win. :)

Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.