Description
A long running merge with DocumentNodeStore may block other commits when there are merge conflicts and a merge is retried.
The DocumentNodeStore currently acquires a shared lock when it performs a merge. This allows concurrent merges. A merge is retried if it fails with a conflict and at some point will acquire above mentioned lock exclusively. This way, merges are serialized and an attempt is made to prevent conflicts introduced by concurrent merges.
The lock becomes problematic when a long running merge hold this lock exclusively. All other commits are then basically blocked.