From 5f442ef742bfaa640fa368316e2bffefb6d613fc Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Thu, 23 Jan 2014 11:47:49 +0100 Subject: [PATCH 1/2] bugfixes --- arangod/Cluster/ClusterInfo.h | 2 +- arangod/Cluster/v8-cluster.cpp | 3 +-- js/server/modules/org/arangodb/cluster.js | 21 +++++++++++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/arangod/Cluster/ClusterInfo.h b/arangod/Cluster/ClusterInfo.h index b710b780e7..e295975627 100644 --- a/arangod/Cluster/ClusterInfo.h +++ b/arangod/Cluster/ClusterInfo.h @@ -595,7 +595,7 @@ namespace triagens { if (it != _jsons.end()) { TRI_json_t* _json = _jsons.begin()->second; return triagens::basics::JsonHelper::getStringValue - (_json, "DBserver", ""); + (_json, "DBServer", ""); } return string(""); } diff --git a/arangod/Cluster/v8-cluster.cpp b/arangod/Cluster/v8-cluster.cpp index f38a5bae8e..ec9707e9d5 100644 --- a/arangod/Cluster/v8-cluster.cpp +++ b/arangod/Cluster/v8-cluster.cpp @@ -845,8 +845,7 @@ static v8::Handle JS_GetCollectionInfoCurrentClusterInfo (v8::Argumen result->Set(v8::String::New("waitForSync"), v8::Boolean::New(cic.waitForSync(shardID))); result->Set(v8::String::New("journalSize"), v8::Number::New(cic.journalSize(shardID))); const std::string serverID = cic.responsibleServer(shardID); - result->Set(v8::String::New("responsibleServer"), - v8::String::New(serverID.c_str(), serverID.size())); + result->Set(v8::String::New("DBServer"), v8::String::New(serverID.c_str(), serverID.size())); // TODO: fill "indexes" v8::Handle indexes = v8::Array::New(); diff --git a/js/server/modules/org/arangodb/cluster.js b/js/server/modules/org/arangodb/cluster.js index 5165213055..23439501f4 100644 --- a/js/server/modules/org/arangodb/cluster.js +++ b/js/server/modules/org/arangodb/cluster.js @@ -248,6 +248,9 @@ function createLocalDatabases (plannedDatabases) { try { db._createDatabase(payload.name); + payload.error = false; + payload.errorNum = 0; + payload.errorMessage = "no error"; } catch (err) { payload.error = true; @@ -426,7 +429,7 @@ function createLocalCollections (plannedCollections) { payload.errorMessage = err2.errorMessage; } - payload.DBserver = ourselves; + payload.DBServer = ourselves; writeLocked({ part: "Current" }, createCollectionAgency, [ database, shard, payload ]); @@ -449,6 +452,10 @@ function createLocalCollections (plannedCollections) { shard); db._collection(shard).load(); } + payload.error = false; + payload.errorNum = 0; + payload.errorMessage = "no error"; + payload.DBServer = ourselves; writeLocked({ part: "Current" }, createCollectionAgency, @@ -483,7 +490,7 @@ function createLocalCollections (plannedCollections) { payload.errorMessage = err3.errorMessage; } - payload.DBserver = ourselves; + payload.DBServer = ourselves; writeLocked({ part: "Current" }, createCollectionAgency, [ database, shard, payload ]); @@ -608,12 +615,14 @@ function cleanupCurrentCollections (plannedCollections) { if (collections.hasOwnProperty(collection)) { var shards = collections[collection]; var shard; - + for (shard in shards) { if (shards.hasOwnProperty(shard)) { - if (! shardMap.hasOwnProperty(shard) || - shardMap[shard] !== ourselves) { - + + if (shards[shard].DBServer === ourselves && + (! shardMap.hasOwnProperty(shard) || + shardMap[shard] !== ourselves)) { + // found a shard we are entered for but that we don't have locally console.info("cleaning up entry for unknown shard '%s' of '%s/%s", shard, database, From 6a2563ffd4fb799c324ae827c14cfb1abf79782f Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Thu, 23 Jan 2014 12:13:30 +0100 Subject: [PATCH 2/2] bugfix for getResponsibleServer --- arangod/Cluster/ClusterInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arangod/Cluster/ClusterInfo.cpp b/arangod/Cluster/ClusterInfo.cpp index 16b8c50505..1c22e1baf8 100644 --- a/arangod/Cluster/ClusterInfo.cpp +++ b/arangod/Cluster/ClusterInfo.cpp @@ -807,7 +807,7 @@ void ClusterInfo::loadCurrentCollections (bool acquireLock) { // Now take note of this shard and its responsible server: std::string DBserver = triagens::basics::JsonHelper::getStringValue - (json, "DBserver", ""); + (json, "DBServer", ""); if (DBserver != "") { _shardIds.insert(make_pair(shardID, DBserver)); }