Skip to content

updating project root stranely slow? #5866

@ceedubs

Description

@ceedubs

Describe and demonstrate the bug

I have the following transcript that just pulls the same code twice into two different projects (note this is a private repository):

```ucm
first/main> pull.without-history @cloud/nimbus/main
```

```ucm
second/main> pull.without-history @cloud/nimbus/main
```

When I run this transcript with UNISON_DEBUG=timing I see the following:

⚙️   Processing stanza 1 of 2.InputPattern: 1.85 ms (cpu), 3.88 ms (system)                         
Causal Negotiation: 23.2 ms (cpu), 107 ms (system)

...
<progress messages about downloading up inserting entities>
...

updateProjectBranchRoot: 39.5 s (cpu), 37.0 s (system)
InputPattern: 60.9 s (cpu), 61.4 s (system)      
⚙️   Processing stanza 2 of 2.InputPattern: 2.72 ms (cpu), 5.00 ms (system)                         
updateProjectBranchRoot: 39.5 s (cpu), 37.1 s (system)
InputPattern: 39.5 s (cpu), 37.6 s (system)      
✔️   Compl ted transcript.s      ,   9  s                                                             
InputPattern: 2.70 µs (cpu), 2.74 µs (system)   

I don't see a timing specifically for downloading the definitions. I'm guessing that it's roughly the difference between the first updateProjectBranchRoot (39.5 s) and the first InputPattern (60.9 s). But what is notable to me is that for both stanzas the updateProjectBranchRoot takes the same 39.5 s (cpu). That seems like a lot to me. And all of the data is the same as in the other project: do we really need to do this work again? What is it that updateProjectBranchRoot is doing?

Environment (please complete the following information):

  • ucm --version release/0.5.47' (built on 2025-08-29)
  • OS/Architecture: x86 linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions