GitRoot

craft your forge, build your project, grow your community freely
priority
95
sprint
""
status
triage
id
"7ab5"
assignee
null
kind
issue

Today lock are badly managed

Today every call to repository.Open() return a repository and then caller can RLock or WLock but sometimes it’s too late.

To bypass that, I made a cacheLock which permit to freeze all cal to reposotory during an operation (creation for example). But no other code can run during a cacheLock because they will not acquire cacheLock.

Suggestion

I think wee need to decouple:

When a repository write, others open repository need to know that and reload (invalid cache?) of current worktree.

All of this lock state should be managed outside of a repo by the manager. Like that it not impact the way repository works.