Repository: asterixdb Updated Branches: refs/heads/master 34f42f746 -> 9410ddd1b
[NO ISSUE][OTH] Fix Timeout Calculation - user model changes: no - storage format changes: no - interface changes: no Details: - Fix elapsed time calculation in InvokeUtil. - Fix elapsed time in replication timeout. . Change-Id: If080d3b3fcdcdc9f7d820698a80211e946d3c4d5 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2615 Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Reviewed-by: Michael Blow <mb...@apache.org> Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/d1c696bb Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/d1c696bb Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/d1c696bb Branch: refs/heads/master Commit: d1c696bb688b6b88379b4b247e721b9db9c1bb0b Parents: ba53220 Author: Murtadha Hubail <mhub...@apache.org> Authored: Wed Apr 25 17:37:39 2018 +0300 Committer: Murtadha Hubail <mhub...@apache.org> Committed: Wed Apr 25 10:59:42 2018 -0700 ---------------------------------------------------------------------- .../asterix/replication/messaging/MarkComponentValidTask.java | 4 ++-- .../src/main/java/org/apache/hyracks/api/util/InvokeUtil.java | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/d1c696bb/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java index b581321..57474ef 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java @@ -29,11 +29,11 @@ import java.util.concurrent.TimeoutException; import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.exceptions.ReplicationException; -import org.apache.asterix.replication.api.IReplicationWorker; import org.apache.asterix.common.storage.IIndexCheckpointManager; import org.apache.asterix.common.storage.IIndexCheckpointManagerProvider; import org.apache.asterix.common.storage.ResourceReference; import org.apache.asterix.replication.api.IReplicaTask; +import org.apache.asterix.replication.api.IReplicationWorker; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager; @@ -71,13 +71,13 @@ public class MarkComponentValidTask implements IReplicaTask { final IIndexCheckpointManagerProvider checkpointManagerProvider = appCtx.getIndexCheckpointManagerProvider(); final IIndexCheckpointManager indexCheckpointManager = checkpointManagerProvider.get(indexRef); long replicationTimeOut = TimeUnit.SECONDS.toMillis(appCtx.getReplicationProperties().getReplicationTimeOut()); - final long startTime = System.nanoTime(); synchronized (indexCheckpointManager) { // wait until the lsn mapping is flushed to disk while (!indexCheckpointManager.isFlushed(masterLsn)) { if (replicationTimeOut <= 0) { throw new ReplicationException(new TimeoutException("Couldn't receive flush lsn from master")); } + final long startTime = System.nanoTime(); indexCheckpointManager.wait(replicationTimeOut); replicationTimeOut -= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/d1c696bb/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java index fb2bdeb..b2dd680 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/InvokeUtil.java @@ -242,14 +242,13 @@ public class InvokeUtil { */ public static void runWithTimeout(ThrowingAction action, BooleanSupplier stopCondition, long timeout, TimeUnit unit) throws Exception { - long remainingTime = unit.toNanos(timeout); + final long waitTime = unit.toNanos(timeout); final long startTime = System.nanoTime(); while (!stopCondition.getAsBoolean()) { - if (remainingTime <= 0) { + action.run(); + if (System.nanoTime() - startTime >= waitTime) { throw new TimeoutException("Stop condition was not met after " + unit.toSeconds(timeout) + " seconds."); } - action.run(); - remainingTime -= System.nanoTime() - startTime; } } }