Consider the following update scenario:
Let's now assume that:
- Sequence is exhausted and needs a non-local update
- Thread 1 acquired lock on topology version N
- Topology version changes
- Thread 2 now calls incrementAndGet(), acquires lock and starts transaction which waits for topology version N+1 to become available
- Thread 1 attemts to incrementAndGet().
Since the lock is already held, thread 2 waits for the concurrent update to complete