activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From franz1981 <...@git.apache.org>
Subject [GitHub] activemq-artemis pull request #1515: ARTEMIS-1393 CriticalAnalyzer timeout u...
Date Thu, 07 Sep 2017 06:38:04 GMT
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.


---

Mime
View raw message