Fixes #20: Fix runtime port and heartbeat sending logic

- Sentinel should not send heartbeat to dashboard until the runtime port has been settled down

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
Eric Zhao 2018-08-01 22:07:08 +08:00
parent f144a2713f
commit 1c9f1606ca
3 changed files with 10 additions and 4 deletions

View File

@ -42,6 +42,10 @@ public class TransportConfig {
return SentinelConfig.getConfig(CONSOLE_SERVER);
}
public static int getRuntimePort() {
return runtimePort;
}
/**
* Get Server port of this HTTP server.
*

View File

@ -124,9 +124,7 @@ public class SimpleHttpCommandCenter implements CommandCenter {
}
}
if (success) {
tmpPort = port;
} else {
if (!success) {
tmpPort = PORT_UNINITIALIZED;
}
TransportConfig.setRuntimePort(tmpPort);

View File

@ -52,7 +52,7 @@ public class SimpleHttpHeartbeatSender implements HeartbeatSender {
public SimpleHttpHeartbeatSender() {
// Retrieve the list of default addresses.
List<InetSocketAddress> newAddrs = getDefaultConsoleIps();
RecordLog.info("Default console address list retrieved: " + newAddrs);
RecordLog.info("[SimpleHttpHeartbeatSender] Default console address list retrieved: " + newAddrs);
this.addressList = newAddrs;
// Set interval config.
String interval = System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS, String.valueOf(DEFAULT_INTERVAL));
@ -61,6 +61,10 @@ public class SimpleHttpHeartbeatSender implements HeartbeatSender {
@Override
public boolean sendHeartbeat() throws Exception {
if (TransportConfig.getRuntimePort() <= 0) {
RecordLog.info("[SimpleHttpHeartbeatSender] Runtime port not initialized, won't send heartbeat");
return false;
}
InetSocketAddress addr = getAvailableAddress();
if (addr == null) {
return false;