Cyrill commented on code in PR #7970:
URL: https://github.com/apache/ignite-3/pull/7970#discussion_r3109267637
##########
modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/HeapLockManager.java:
##########
@@ -871,6 +881,8 @@ IgniteBiTuple<CompletableFuture<Void>, LockMode>
tryAcquire(UUID txId, LockMode
track(waiter.txId, this);
}
+ assertLockModeHeldCount();
Review Comment:
Checked with a dedicated mixed X/S bench (releaseWakeupMixed: 1 X-writer +
15 S-readers on a shared key, NO_OP policy so S-readers actually queue behind
the X-holder). In this setup every X release triggers unlockCompatibleWaiters
over a batch of pending S waiters
| bench
| main | this PR | Δ |
|--------------------------------------------------------------------------------|---------------------|---------------------|------|
| releaseWakeupMixed:releaseWakeupMixedS (per-S-reader, the release-wakeup
path) | 4.169 ± 0.691 µs/op | 3.354 ± 0.295 µs/op | −20% |
| contendedSharedKeyS (16-thread S-only, acquire-side fast path)
| 6.100 ± 0.271 µs/op | 4.809 ± 0.362 µs/op | −21% |
| lockCommit (1-thread, 200 unique X keys — sanity)
| 22.757 µs/op | 19.022 µs/op | −16% |
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]