`lore status` cannot run while a long `lore push` holds the repository lock
Lore version
lore 0.9.0+783
Installation method
Prebuilt release binary
Operating system / architecture
Windows -- x86_64
Steps to reproduce
A branch push holds the exclusive repository directory lock (.lore/lock) for its whole duration, including the upload. On a project with a few gigabytes of new content the push runs for many minutes, and during that time no other command can open the repository, not even a plain lore status. So Lore clients such as Anchorpoint cannot update the status if the user continues to work on the project while pushing:
- Commit a few GB of new files locally.
- Terminal A:
lore branch push - Terminal B, while the upload runs:
lore status
Terminal B prints
[Warn] Still waiting for lock "<repo>/.lore/lock" held by another process after 5 seconds
and only returns once the push has finished.
Expected vs actual behavior
Either of these would solve it, the first being the stronger fix if possible:
lore pushtakes the exclusive lock only where it mutates local state, i.e. after the upload when it moves the branch tip and records the pushed revisions.- Weaker:
lore statussucceeds while the lock is held, walking and reporting read-only and warning that the refreshed dirty flags could not be persisted.
I hope this can be improved in Lore as it works fine in Git.
Component
None
Server context
No response
Regression?
No response
Relevant logs or output
Source: EpicGames/lore