>From Michael Blow <[email protected]>:
Michael Blow has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18396 )
Change subject: [NO ISSUE][*DB] CCMessageBroker fixes
......................................................................
[NO ISSUE][*DB] CCMessageBroker fixes
- only wait for remaining timeout
- simplify/cleanup logic
Change-Id: I19606553af5dde0ed7221563fdb84671ead75881
---
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
1 file changed, 21 insertions(+), 8 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/96/18396/1
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
index 0683207..9b31b8e 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/messaging/CCMessageBroker.java
@@ -21,6 +21,7 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
@@ -40,6 +41,7 @@
import org.apache.hyracks.control.cc.ClusterControllerService;
import org.apache.hyracks.control.cc.NodeControllerState;
import org.apache.hyracks.control.cc.cluster.INodeManager;
+import org.apache.hyracks.util.Span;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -122,17 +124,16 @@
throw new
RuntimeDataException(ErrorCode.ILLEGAL_STATE, "unable to send sync message to "
+ nc);
}
}
- long time = System.currentTimeMillis();
+ Span span = Span.start(timeout, TimeUnit.MILLISECONDS);
while (pair.getLeft().getValue() > 0) {
- try {
- pair.wait(timeout);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw HyracksDataException.create(e);
- }
- if (System.currentTimeMillis() - time > timeout &&
pair.getLeft().getValue() > 0) {
+ if (span.elapsed()) {
throw new
RuntimeDataException(ErrorCode.NC_REQUEST_TIMEOUT, timeout / 1000);
}
+ try {
+ span.wait(pair);
+ } catch (InterruptedException e) {
+ throw HyracksDataException.create(e);
+ }
}
}
MutablePair<ResponseState, Object> right = pair.getRight();
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18396
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I19606553af5dde0ed7221563fdb84671ead75881
Gerrit-Change-Number: 18396
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <[email protected]>
Gerrit-MessageType: newchange