Merge branch 'gerrit/stabilization-f69489'
Change-Id: Ic49fc22902c43b4043b207351ee0dd9e4a9232d7
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/NetworkAddress.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/NetworkAddress.java
index 4fad59a..d74f500 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/NetworkAddress.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/NetworkAddress.java
@@ -33,7 +33,9 @@
private String address;
// Cached locally, not serialized
- private byte[] ipAddress;
+ private volatile byte[] ipAddress;
+ // Cached locally, not serialized
+ private volatile InetSocketAddress inetSocketAddress;
private int port;
@@ -73,6 +75,13 @@
return ipAddress;
}
+ public InetSocketAddress resolveInetSocketAddress() {
+ if (inetSocketAddress == null) {
+ inetSocketAddress = new InetSocketAddress(address, port);
+ }
+ return inetSocketAddress;
+ }
+
public int getPort() {
return port;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
index 0ea9239..eae13c6 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
@@ -51,7 +51,7 @@
String id = reg.getNodeId();
LOGGER.info("registering node: {}", id);
NodeControllerRemoteProxy nc = new NodeControllerRemoteProxy(ccs.getCcId(),
- ccs.getClusterIPC().getReconnectingHandle(reg.getNodeControllerAddress()));
+ ccs.getClusterIPC().getReconnectingHandle(reg.getNodeControllerPort().resolveInetSocketAddress()));
INodeManager nodeManager = ccs.getNodeManager();
NodeParameters params = new NodeParameters();
params.setClusterControllerInfo(ccs.getClusterControllerInfo());
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
index aa1a01f..9929ac4 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
@@ -44,6 +44,7 @@
private static final Logger LOGGER = LogManager.getLogger();
+ @Deprecated
private InetSocketAddress ncAddress;
private NetworkAddress ncPort;
@@ -117,8 +118,8 @@
}
}
- public InetSocketAddress getNodeControllerAddress() {
- return ncAddress;
+ public NetworkAddress getNodeControllerPort() {
+ return ncPort;
}
public String getNodeId() {
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
index 6b0933e..d2ff66e 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
@@ -431,7 +431,7 @@
NodeParameters nodeParameters = ccc.getNodeParameters();
// Start heartbeat generator.
heartbeatManagers.computeIfAbsent(ccId, newCcId -> HeartbeatManager.init(this, ccc, hbTask.getHeartbeatData(),
- nodeRegistration.getNodeControllerAddress()));
+ nodeRegistration.getNodeControllerPort().resolveInetSocketAddress()));
if (!ccTimers.containsKey(ccId) && nodeParameters.getProfileDumpPeriod() > 0) {
Timer ccTimer = new Timer("Timer-" + ccId, true);
// Schedule profile dump generator.