diff --git a/arangod/Cluster/AgencyComm.cpp b/arangod/Cluster/AgencyComm.cpp index c82c02f5dd..70a15a71a2 100644 --- a/arangod/Cluster/AgencyComm.cpp +++ b/arangod/Cluster/AgencyComm.cpp @@ -650,7 +650,9 @@ void AgencyComm::cleanup () { bool AgencyComm::tryConnect () { { WRITE_LOCKER(AgencyComm::_globalLock); - assert(_globalEndpoints.size() > 0); + if (_globalEndpoints.size() == 0) { + return false; + } std::list::iterator it = _globalEndpoints.begin(); @@ -1473,9 +1475,13 @@ bool AgencyComm::sendWithFailover (triagens::rest::HttpRequest::HttpRequestType { READ_LOCKER(AgencyComm::_globalLock); numEndpoints = AgencyComm::_globalEndpoints.size(); - assert(numEndpoints > 0); + if (numEndpoints == 0) { + return false; + } } + assert(numEndpoints > 0); + size_t tries = 0; std::string realUrl = url; std::string forceEndpoint = ""; diff --git a/arangod/Cluster/ServerState.cpp b/arangod/Cluster/ServerState.cpp index 2285da6d9b..7986d83591 100644 --- a/arangod/Cluster/ServerState.cpp +++ b/arangod/Cluster/ServerState.cpp @@ -177,6 +177,10 @@ std::string ServerState::stateToString (StateEnum state) { void ServerState::flush () { WRITE_LOCKER(_lock); + if (_id.empty()) { + return; + } + _address = ClusterInfo::instance()->getTargetServerEndpoint(_id); _role = determineRole(_id); } @@ -256,7 +260,9 @@ std::string ServerState::getAddress () { } // address not yet set - assert(! id.empty()); + if (id.empty()) { + return ""; + } // fetch and set the address const std::string address = ClusterInfo::instance()->getTargetServerEndpoint(id); @@ -340,6 +346,10 @@ void ServerState::setState (StateEnum state) { //////////////////////////////////////////////////////////////////////////////// ServerState::RoleEnum ServerState::determineRole (std::string const& id) { + if (id.empty()) { + return ServerState::ROLE_UNDEFINED; + } + ServerState::RoleEnum role = checkServersList(id); ServerState::RoleEnum role2 = checkCoordinatorsList(id);