Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2315

Change subject: [ASTERIXDB-1706][RT] Use System.nanoTime For Result Timestamp
......................................................................

[ASTERIXDB-1706][RT] Use System.nanoTime For Result Timestamp

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Use System.nanoTime for result timestamp to
  avoid results being incorrectly swept due to
  System.currentTimeMillis system time adjustments.

Change-Id: I388d2a477bcfdc47d11dc6a4873483b82c9fadbf
---
M 
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/DatasetJobRecord.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultSetMap.java
3 files changed, 10 insertions(+), 17 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/15/2315/1

diff --git 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/DatasetJobRecord.java
 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/DatasetJobRecord.java
index 55f1d7c..4e7ddda 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/DatasetJobRecord.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/DatasetJobRecord.java
@@ -84,7 +84,7 @@
     private Map<ResultSetId, ResultSetMetaData> resultSetMetadataMap = new 
HashMap<>();
 
     public DatasetJobRecord() {
-        this.timestamp = System.currentTimeMillis();
+        this.timestamp = System.nanoTime();
         this.status = new Status();
     }
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
index a9ca771..4fb03b5 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
@@ -21,10 +21,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.hyracks.api.dataset.IDatasetManager;
 import org.apache.hyracks.api.job.JobId;
-import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Logger;
 
 /**
@@ -33,34 +33,29 @@
 public class ResultStateSweeper implements Runnable {
 
     private final IDatasetManager datasetManager;
-
     private final long resultTTL;
-
     private final long resultSweepThreshold;
-
     private final Logger logger;
-
     private final List<JobId> toBeCollected;
 
     public ResultStateSweeper(IDatasetManager datasetManager, long resultTTL, 
long resultSweepThreshold,
             Logger logger) {
         this.datasetManager = datasetManager;
-        this.resultTTL = resultTTL;
+        this.resultTTL = TimeUnit.MILLISECONDS.toNanos(resultTTL);
         this.resultSweepThreshold = resultSweepThreshold;
         this.logger = logger;
-        toBeCollected = new ArrayList<JobId>();
+        toBeCollected = new ArrayList<>();
     }
 
     @Override
-    @SuppressWarnings("squid:S2142") // catch interrupted exception
     public void run() {
-        while (true) {
+        while (!Thread.currentThread().isInterrupted()) {
             try {
                 Thread.sleep(resultSweepThreshold);
                 sweep();
             } catch (InterruptedException e) {
-                logger.log(Level.WARN, "Result cleaner thread interrupted, 
shutting down.");
-                break; // the interrupt was explicit from another thread. This 
thread should shut down...
+                logger.warn("Result cleaner thread interrupted, shutting 
down.");
+                Thread.currentThread().interrupt();
             }
         }
     }
@@ -70,7 +65,7 @@
             toBeCollected.clear();
             for (JobId jobId : datasetManager.getJobIds()) {
                 final long timestamp = 
datasetManager.getResultTimestamp(jobId);
-                if (timestamp != -1 && System.currentTimeMillis() > timestamp 
+ resultTTL) {
+                if (timestamp != -1 && System.nanoTime() > timestamp + 
resultTTL) {
                     toBeCollected.add(jobId);
                 }
             }
@@ -78,8 +73,6 @@
                 datasetManager.deinitState(jobId);
             }
         }
-        if (logger.isTraceEnabled()) {
-            logger.trace("Result state cleanup instance successfully 
completed.");
-        }
+        logger.trace("Result state cleanup instance successfully completed.");
     }
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultSetMap.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultSetMap.java
index 3957401..1a64a5a 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultSetMap.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultSetMap.java
@@ -37,7 +37,7 @@
     private final HashMap<ResultSetId, ResultState[]> resultStateMap;
 
     ResultSetMap() {
-        timestamp = System.currentTimeMillis();
+        timestamp = System.nanoTime();
         resultStateMap = new HashMap<>();
     }
 

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2315
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I388d2a477bcfdc47d11dc6a4873483b82c9fadbf
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>

Reply via email to