From b235af0fbfca98fde08c0d9c1c78dc33b27531d5 Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 6 Dec 2017 11:05:40 +0100 Subject: [PATCH] fix version check (#3781) --- arangod/Replication/Syncer.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/arangod/Replication/Syncer.cpp b/arangod/Replication/Syncer.cpp index b0690d2d2c..dc398e3481 100644 --- a/arangod/Replication/Syncer.cpp +++ b/arangod/Replication/Syncer.cpp @@ -174,18 +174,23 @@ Result Syncer::sendCreateBarrier(TRI_voc_tick_t minTick) { _barrierId = 0; std::string const url = ReplicationUrl + "/barrier"; - std::string const body = "{\"ttl\":" + StringUtils::itoa(_barrierTtl) + - ",\"tick\":\"" + StringUtils::itoa(minTick) + "\"}"; + VPackBuilder builder; + builder.openObject(); + builder.add("ttl", VPackValue(_barrierTtl)); + builder.add("tick", VPackValue(std::to_string(minTick))); + builder.close(); + + std::string body = builder.slice().toJson(); // send request std::unique_ptr response(_client->retryRequest( - rest::RequestType::POST, url, body.c_str(), body.size())); + rest::RequestType::POST, url, body.data(), body.size())); if (hasFailed(response.get())) { return buildHttpError(response.get(), url); } - VPackBuilder builder; + builder.clear(); Result r = parseResponse(builder, response.get()); if (r.fail()) { return r; @@ -225,7 +230,7 @@ Result Syncer::sendExtendBarrier(TRI_voc_tick_t tick) { // send request std::unique_ptr response(_client->request( - rest::RequestType::PUT, url, body.c_str(), body.size())); + rest::RequestType::PUT, url, body.data(), body.size())); if (response == nullptr || !response->isComplete()) { return Result(TRI_ERROR_REPLICATION_NO_RESPONSE); @@ -834,8 +839,9 @@ Result Syncer::buildHttpError(SimpleHttpResult* response, std::string const& url bool Syncer::simulate32Client() const { TRI_ASSERT(!_masterInfo._endpoint.empty() && _masterInfo._serverId != 0 && _masterInfo._majorVersion != 0); - bool is33 = _masterInfo._majorVersion >= 3 && - _masterInfo._minorVersion >= 3; + bool is33 = (_masterInfo._majorVersion > 3 || + (_masterInfo._majorVersion == 3 && + _masterInfo._minorVersion >= 3)); #ifdef ARANGODB_ENABLE_MAINTAINER_MODE // allows us to test the old replication API return !is33 || _configuration._force32mode;