diff --git a/arangod/Replication/ReplicationFeature.cpp b/arangod/Replication/ReplicationFeature.cpp index 49cefc52b0..956dac6aec 100644 --- a/arangod/Replication/ReplicationFeature.cpp +++ b/arangod/Replication/ReplicationFeature.cpp @@ -173,6 +173,8 @@ static std::string FixEndpointProto(std::string const& endpoint) { } static void writeError(int code, GeneralResponse* response) { + response->setResponseCode(GeneralResponse::responseCode(code)); + VPackBuffer buffer; VPackBuilder builder(buffer); builder.add(VPackValue(VPackValueType::Object)); @@ -187,7 +189,6 @@ static void writeError(int code, GeneralResponse* response) { response->setPayload(std::move(buffer), true, VPackOptions::Defaults); } - /// @brief fill a response object with correct response for a follower void ReplicationFeature::prepareFollowerResponse(GeneralResponse* response, arangodb::ServerState::Mode mode) { @@ -222,6 +223,7 @@ void ReplicationFeature::prepareFollowerResponse(GeneralResponse* response, break; case ServerState::Mode::MAINTENANCE: default: { + response->setResponseCode(rest::ResponseCode::SERVICE_UNAVAILABLE); break; } } diff --git a/lib/Rest/GeneralResponse.cpp b/lib/Rest/GeneralResponse.cpp index 63fff88ed5..480179c011 100644 --- a/lib/Rest/GeneralResponse.cpp +++ b/lib/Rest/GeneralResponse.cpp @@ -418,6 +418,7 @@ rest::ResponseCode GeneralResponse::responseCode(int code) { case TRI_ERROR_CLUSTER_SHARD_LEADER_RESIGNED: case TRI_ERROR_CLUSTER_LEADERSHIP_CHALLENGE_ONGOING: case TRI_ERROR_CLUSTER_NOT_LEADER: + case TRI_ERROR_SHUTTING_DOWN: return ResponseCode::SERVICE_UNAVAILABLE; case TRI_ERROR_CLUSTER_UNSUPPORTED: