Github user franz1981 commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1517#discussion_r137468488
--- Diff:
artemis-commons/src/main/java/org/apache/activemq/artemis/utils/critical/CriticalMeasure.java
---
@@ -17,28 +17,33 @@
package org.apache.activemq.artemis.utils.critical;
-import org.jboss.logging.Logger;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
public class CriticalMeasure {
- private static final Logger logger =
Logger.getLogger(CriticalMeasure.class);
+ //uses updaters to avoid creates many AtomicLong instances
+ private static final AtomicLongFieldUpdater<CriticalMeasure>
TIME_ENTER_UPDATER = AtomicLongFieldUpdater.newUpdater(CriticalMeasure.class,
"timeEnter");
+ private static final AtomicLongFieldUpdater<CriticalMeasure>
TIME_LEFT_UPDATER = AtomicLongFieldUpdater.newUpdater(CriticalMeasure.class,
"timeLeft");
+ //System::nanoTime can't reach this value so it's the best candidate to
have a NULL semantic
private volatile long timeEnter;
--- End diff --
Set both to Long.MIN_VALUE and the logic will work across different OS too.
---