Github user wy96f commented on the issue: https://github.com/apache/activemq-artemis/pull/2481 We add a pending counter to count enterCritical calls. If left time is less than enter time and pending counter equals to 0, we don't expire component as all threads have called leaveCritical and it maybe caused by clock drift. When a clock jumps backwards, to avoid the edge case that enterCritical is called during isExpired, we need to compare current time to latest timeEnter.
---