[
https://issues.apache.org/jira/browse/ARTEMIS-1393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16156563#comment-16156563
]
ASF GitHub Bot commented on ARTEMIS-1393:
-----------------------------------------
Github user franz1981 commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1515#discussion_r137456469
--- Diff:
artemis-commons/src/main/java/org/apache/activemq/artemis/utils/critical/CriticalMeasure.java
---
@@ -17,28 +17,39 @@
package org.apache.activemq.artemis.utils.critical;
-import org.jboss.logging.Logger;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
-public class CriticalMeasure {
+final 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");
- private volatile long timeEnter;
- private volatile long timeLeft;
+ //System::nanoTime can't reach this value so it's the best candidate to
have a NULL semantic
+ private static final long NIL = Long.MAX_VALUE;
--- End diff --
I can do an approximation of the original logic by initializing both the
variables to Long.MIN in order to maintain this logic simple as the original
one and to cover the case where only timeLeft is not initialized with nanoTime
calls negative.
> CriticalAnalyzer timeout uses System::currentTimeMillis
> -------------------------------------------------------
>
> Key: ARTEMIS-1393
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1393
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: Francesco Nigro
> Assignee: Francesco Nigro
>
> To compute timeouts of the CriticalAnalyzer Instead of
> System::currentTimeMillis is preferrable to use System::nanoTime, that is not
> sensible to OS changes on the system clock (eg NTP compensation).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)