1
0
Fork 0

servers should be retrying registration until successful (#5919)

This commit is contained in:
Kaveh Vahedipour 2018-08-17 10:57:45 +02:00 committed by Jan
parent d4d0f44f87
commit 54cc026d34
1 changed files with 23 additions and 18 deletions

View File

@ -415,26 +415,31 @@ void ClusterFeature::start() {
startHeartbeatThread(_agencyCallbackRegistry.get(), _heartbeatInterval, 5, endpoints);
VPackBuilder builder;
try {
VPackObjectBuilder b(&builder);
builder.add("endpoint", VPackValue(_myAddress));
builder.add("host", VPackValue(ServerState::instance()->getHost()));
builder.add("version", VPackValue(rest::Version::getNumericServerVersion()));
builder.add("engine", VPackValue(EngineSelectorFeature::engineName()));
} catch (...) {
LOG_TOPIC(FATAL, arangodb::Logger::CLUSTER) << "out of memory";
FATAL_ERROR_EXIT();
}
while (true) {
VPackBuilder builder;
try {
VPackObjectBuilder b(&builder);
builder.add("endpoint", VPackValue(_myAddress));
builder.add("host", VPackValue(ServerState::instance()->getHost()));
builder.add("version", VPackValue(rest::Version::getNumericServerVersion()));
builder.add("engine", VPackValue(EngineSelectorFeature::engineName()));
} catch (...) {
LOG_TOPIC(FATAL, arangodb::Logger::CLUSTER) << "out of memory";
FATAL_ERROR_EXIT();
}
result.clear();
result = comm.setValue("Current/ServersRegistered/" + myId,
builder.slice(), 0.0);
result = comm.setValue("Current/ServersRegistered/" + myId,
builder.slice(), 0.0);
if (!result.successful()) {
LOG_TOPIC(FATAL, arangodb::Logger::CLUSTER) << "unable to register server in agency: http code: "
<< result.httpCode() << ", body: " << result.body();
FATAL_ERROR_EXIT();
if (result.successful()) {
break;
} else {
LOG_TOPIC(WARN, arangodb::Logger::CLUSTER)
<< "failed to register server in agency: http code: "
<< result.httpCode() << ", body: '" << result.body() << "', retrying ...";
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
comm.increment("Current/Version");