1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into devel

This commit is contained in:
jsteemann 2016-06-06 22:44:52 +02:00
commit 9385e9b36a
2 changed files with 82 additions and 60 deletions

View File

@ -649,21 +649,19 @@ int countOnCoordinator(std::string const& dbname, std::string const& collname,
} }
auto shards = collinfo->shardIds(); auto shards = collinfo->shardIds();
CoordTransactionID coordTransactionID = TRI_NewTickServer(); std::vector<ClusterCommRequest> requests;
auto body = std::make_shared<std::string>();
for (auto const& p : *shards) { for (auto const& p : *shards) {
auto headers = std::make_unique<std::unordered_map<std::string, std::string>>(); requests.emplace_back("shard:" + p.first,
cc->asyncRequest( arangodb::GeneralRequest::RequestType::GET,
"", coordTransactionID, "shard:" + p.first, "/_db/" + StringUtils::urlEncode(dbname) +
arangodb::GeneralRequest::RequestType::GET, "/_api/collection/" +
"/_db/" + StringUtils::urlEncode(dbname) + "/_api/collection/" + StringUtils::urlEncode(p.first) + "/count", body);
StringUtils::urlEncode(p.first) + "/count",
std::shared_ptr<std::string>(), headers, nullptr, 300.0);
} }
// Now listen to the results: size_t nrDone = 0;
int count; cc->performRequests(requests, CL_DEFAULT_TIMEOUT, nrDone, Logger::QUERIES);
int nrok = 0; for (auto& req : requests) {
for (count = (int)shards->size(); count > 0; count--) { auto& res = req.result;
auto res = cc->wait("", coordTransactionID, 0, "", 0.0);
if (res.status == CL_COMM_RECEIVED) { if (res.status == CL_COMM_RECEIVED) {
if (res.answer_code == arangodb::GeneralResponse::ResponseCode::OK) { if (res.answer_code == arangodb::GeneralResponse::ResponseCode::OK) {
std::shared_ptr<VPackBuilder> answerBuilder = ExtractAnswer(res); std::shared_ptr<VPackBuilder> answerBuilder = ExtractAnswer(res);
@ -674,18 +672,18 @@ int countOnCoordinator(std::string const& dbname, std::string const& collname,
result += result +=
arangodb::basics::VelocyPackHelper::getNumericValue<uint64_t>( arangodb::basics::VelocyPackHelper::getNumericValue<uint64_t>(
answer, "count", 0); answer, "count", 0);
nrok++; } else {
return TRI_ERROR_INTERNAL;
} }
} else {
return static_cast<int>(res.answer_code);
} }
} else {
return TRI_ERROR_CLUSTER_BACKEND_UNAVAILABLE;
} }
} }
if (nrok != (int)shards->size()) { return TRI_ERROR_NO_ERROR;
return TRI_ERROR_INTERNAL;
}
return TRI_ERROR_NO_ERROR; // the cluster operation was OK, however,
// the DBserver could have reported an error.
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View File

@ -283,22 +283,26 @@ function SynchronousReplicationSuite () {
catch (e1) { catch (e1) {
assertEqual(ERRORS.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code, e1.errorNum); assertEqual(ERRORS.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code, e1.errorNum);
} }
assertEqual(2, c.count());
if (healing.place === 15) { healFailure(healing); } if (healing.place === 15) { healFailure(healing); }
if (failure.place === 16) { makeFailure(failure); } if (failure.place === 16) { makeFailure(failure); }
c.remove([ids[0]._key, ids[1]._key]); assertEqual(2, c.count());
if (healing.place === 16) { healFailure(healing); } if (healing.place === 16) { healFailure(healing); }
if (failure.place === 17) { makeFailure(failure); } if (failure.place === 17) { makeFailure(failure); }
c.remove([ids[0]._key, ids[1]._key]);
if (healing.place === 17) { healFailure(healing); }
if (failure.place === 18) { makeFailure(failure); }
docs = c.document([ids[0]._key, ids[1]._key]); docs = c.document([ids[0]._key, ids[1]._key]);
assertEqual(2, docs.length); assertEqual(2, docs.length);
assertTrue(docs[0].error); assertTrue(docs[0].error);
assertTrue(docs[1].error); assertTrue(docs[1].error);
if (healing.place === 17) { healFailure(healing); } if (healing.place === 18) { healFailure(healing); }
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -336,7 +340,6 @@ function SynchronousReplicationSuite () {
/// @brief check whether we have access to global.instanceInfo /// @brief check whether we have access to global.instanceInfo
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/*
testCheckInstanceInfo : function () { testCheckInstanceInfo : function () {
assertTrue(global.instanceInfo !== undefined); assertTrue(global.instanceInfo !== undefined);
}, },
@ -376,7 +379,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail1 : function () { testBasicOperationsFollowerFail1 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:1, follower:true}, {place:17, follower:true}); runBasicOperations({place:1, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -386,7 +389,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail2 : function () { testBasicOperationsFollowerFail2 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:2, follower:true}, {place:17, follower:true}); runBasicOperations({place:2, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -396,7 +399,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail3 : function () { testBasicOperationsFollowerFail3 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:3, follower:true}, {place:17, follower:true}); runBasicOperations({place:3, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -406,7 +409,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail4 : function () { testBasicOperationsFollowerFail4 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:4, follower:true}, {place:17, follower:true}); runBasicOperations({place:4, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -416,7 +419,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail5 : function () { testBasicOperationsFollowerFail5 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:5, follower:true}, {place:17, follower:true}); runBasicOperations({place:5, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -426,7 +429,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail6 : function () { testBasicOperationsFollowerFail6 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:6, follower:true}, {place:17, follower:true}); runBasicOperations({place:6, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -436,7 +439,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail7 : function () { testBasicOperationsFollowerFail7 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:7, follower:true}, {place:17, follower:true}); runBasicOperations({place:7, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -446,7 +449,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail8 : function () { testBasicOperationsFollowerFail8 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:8, follower:true}, {place:17, follower:true}); runBasicOperations({place:8, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -456,7 +459,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail9 : function () { testBasicOperationsFollowerFail9 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:9, follower:true}, {place:17, follower:true}); runBasicOperations({place:9, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -466,7 +469,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail10 : function () { testBasicOperationsFollowerFail10 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:10, follower:true}, {place:17, follower:true}); runBasicOperations({place:10, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -476,7 +479,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail11 : function () { testBasicOperationsFollowerFail11 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:11, follower:true}, {place:17, follower:true}); runBasicOperations({place:11, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -486,7 +489,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail12 : function () { testBasicOperationsFollowerFail12 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:12, follower:true}, {place:17, follower:true}); runBasicOperations({place:12, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -496,7 +499,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail13 : function () { testBasicOperationsFollowerFail13 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:13, follower:true}, {place:17, follower:true}); runBasicOperations({place:13, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -506,7 +509,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail14 : function () { testBasicOperationsFollowerFail14 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:14, follower:true}, {place:17, follower:true}); runBasicOperations({place:14, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -516,7 +519,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail15 : function () { testBasicOperationsFollowerFail15 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:15, follower:true}, {place:17, follower:true}); runBasicOperations({place:15, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -526,7 +529,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail16 : function () { testBasicOperationsFollowerFail16 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:16, follower:true}, {place:17, follower:true}); runBasicOperations({place:16, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -536,10 +539,20 @@ function SynchronousReplicationSuite () {
testBasicOperationsFollowerFail17 : function () { testBasicOperationsFollowerFail17 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:17, follower:true}, {place:17, follower:true}); runBasicOperations({place:17, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
*/
////////////////////////////////////////////////////////////////////////////////
/// @brief fail in place 18
////////////////////////////////////////////////////////////////////////////////
testBasicOperationsFollowerFail18 : function () {
assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:18, follower:true}, {place:18, follower:true});
assertTrue(waitForSynchronousReplication("_system"));
},
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief run a standard check with failures: /// @brief run a standard check with failures:
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -559,7 +572,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail1 : function () { testBasicOperationsLeaderFail1 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:1, follower: false}, runBasicOperations({place:1, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -570,7 +583,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail2 : function () { testBasicOperationsLeaderFail2 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:2, follower: false}, runBasicOperations({place:2, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -581,7 +594,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail3 : function () { testBasicOperationsLeaderFail3 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:3, follower: false}, runBasicOperations({place:3, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -592,7 +605,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail4 : function () { testBasicOperationsLeaderFail4 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:4, follower: false}, runBasicOperations({place:4, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -603,7 +616,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail5 : function () { testBasicOperationsLeaderFail5 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:5, follower: false}, runBasicOperations({place:5, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -614,7 +627,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail6 : function () { testBasicOperationsLeaderFail6 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:6, follower: false}, runBasicOperations({place:6, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -625,7 +638,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail7 : function () { testBasicOperationsLeaderFail7 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:7, follower: false}, runBasicOperations({place:7, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -636,7 +649,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail8 : function () { testBasicOperationsLeaderFail8 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:8, follower: false}, runBasicOperations({place:8, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -647,7 +660,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail9 : function () { testBasicOperationsLeaderFail9 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:9, follower: false}, runBasicOperations({place:9, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -658,7 +671,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail10 : function () { testBasicOperationsLeaderFail10 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:10, follower: false}, runBasicOperations({place:10, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -669,7 +682,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail11 : function () { testBasicOperationsLeaderFail11 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:11, follower: false}, runBasicOperations({place:11, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -680,7 +693,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail12 : function () { testBasicOperationsLeaderFail12 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:12, follower: false}, runBasicOperations({place:12, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -691,7 +704,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail13 : function () { testBasicOperationsLeaderFail13 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:13, follower: false}, runBasicOperations({place:13, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -702,7 +715,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail14 : function () { testBasicOperationsLeaderFail14 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:14, follower: false}, runBasicOperations({place:14, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -713,7 +726,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail15 : function () { testBasicOperationsLeaderFail15 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:15, follower: false}, runBasicOperations({place:15, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -724,7 +737,7 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail16 : function () { testBasicOperationsLeaderFail16 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:16, follower: false}, runBasicOperations({place:16, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },
@ -735,7 +748,18 @@ function SynchronousReplicationSuite () {
testBasicOperationsLeaderFail17 : function () { testBasicOperationsLeaderFail17 : function () {
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:17, follower: false}, runBasicOperations({place:17, follower: false},
{place:17, follower: false}); {place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system"));
},
////////////////////////////////////////////////////////////////////////////////
/// @brief fail leader in place 18
////////////////////////////////////////////////////////////////////////////////
testBasicOperationsLeaderFail18 : function () {
assertTrue(waitForSynchronousReplication("_system"));
runBasicOperations({place:18, follower: false},
{place:18, follower: false});
assertTrue(waitForSynchronousReplication("_system")); assertTrue(waitForSynchronousReplication("_system"));
}, },