From 10ff104236d931fbe4d678ee51134a9946d5528d Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Fri, 4 Dec 2015 16:08:02 +0100 Subject: [PATCH] Another snapshot. --- arangod/Cluster/ClusterMethods.cpp | 19 +++++++++---------- arangod/V8Server/v8-vocindex.cpp | 7 ++----- lib/Basics/JsonHelper.h | 21 +++++++++++++++++++-- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/arangod/Cluster/ClusterMethods.cpp b/arangod/Cluster/ClusterMethods.cpp index 8d4e0d6027..97b000b0af 100644 --- a/arangod/Cluster/ClusterMethods.cpp +++ b/arangod/Cluster/ClusterMethods.cpp @@ -1008,11 +1008,11 @@ static void insertIntoShardMap (ClusterInfo* ci, else { // Sorry we do not know the responsible shard yet // Ask all of them - std::map shardIds = collinfo->shardIds(); - for (auto shard : shardIds) { - auto it = shardMap.find(shard.first); + auto shardList = ci->getShardList(collid); + for (auto const& shard : *shardList) { + auto it = shardMap.find(shard); if (it == shardMap.end()) { - shardMap.emplace(shard.first, std::vector({splitId[1]})); + shardMap.emplace(shard, std::vector({splitId[1]})); } else { it->second.push_back(splitId[1]); @@ -1261,8 +1261,7 @@ int getFilteredEdgesOnCoordinator ( ClusterCommResult* res; - map shards = collinfo->shardIds(); - map::iterator it; + auto shards = collinfo->shardIds(); CoordTransactionID coordTransactionID = TRI_NewTickServer(); std::string queryParameters = "?vertex=" + StringUtils::urlEncode(vertex); if (direction == TRI_EDGE_IN) { @@ -1281,11 +1280,11 @@ int getFilteredEdgesOnCoordinator ( } reqBodyString->append(body.toString()); } - for (it = shards.begin(); it != shards.end(); ++it) { + for (auto const& p : *shards) { map* headers = new map; - res = cc->asyncRequest("", coordTransactionID, "shard:" + it->first, + res = cc->asyncRequest("", coordTransactionID, "shard:" + p.first, triagens::rest::HttpRequest::HTTP_REQUEST_PUT, - "/_db/" + StringUtils::urlEncode(dbname) + "/_api/edges/" + it->first + queryParameters, + "/_db/" + StringUtils::urlEncode(dbname) + "/_api/edges/" + p.first + queryParameters, reqBodyString, headers, nullptr, 3600.0); delete res; } @@ -1298,7 +1297,7 @@ int getFilteredEdgesOnCoordinator ( triagens::basics::Json documents(triagens::basics::Json::Array); - for (count = (int) shards.size(); count > 0; count--) { + for (count = (int) shards->size(); count > 0; count--) { res = cc->wait( "", coordTransactionID, 0, "", 0.0); if (res->status == CL_COMM_TIMEOUT) { delete res; diff --git a/arangod/V8Server/v8-vocindex.cpp b/arangod/V8Server/v8-vocindex.cpp index 8ace400bcb..6bb3c17a77 100644 --- a/arangod/V8Server/v8-vocindex.cpp +++ b/arangod/V8Server/v8-vocindex.cpp @@ -1097,8 +1097,6 @@ static void CreateCollectionCoordinator (const v8::FunctionCallbackInfotoJson(TRI_UNKNOWN_MEM_ZONE, false); + TRI_json_t* index = idxJson.json(); + TRI_json_t* indexes; TRI_json_t* json; - TRI_PushBack3ArrayJson(TRI_UNKNOWN_MEM_ZONE, indexes, TRI_CopyJson(TRI_UNKNOWN_MEM_ZONE, idxJson.json())); - - if (collectionType == TRI_COL_TYPE_EDGE) { // create a dummy edge index std::unique_ptr edgeIndex(new triagens::arango::EdgeIndex(id, nullptr)); diff --git a/lib/Basics/JsonHelper.h b/lib/Basics/JsonHelper.h index d48ba0ee6a..4a3b3756fe 100644 --- a/lib/Basics/JsonHelper.h +++ b/lib/Basics/JsonHelper.h @@ -299,8 +299,25 @@ namespace triagens { catch (...) { return std::shared_ptr(); } - return std::shared_ptr(); - // FIXME: activate return parser.steal(); + return parser.steal(); + } + +//////////////////////////////////////////////////////////////////////////////// +/// @brief TRI_json_t to VelocyPack, writing into an existing Builder +//////////////////////////////////////////////////////////////////////////////// + + static int toVelocyPack ( + TRI_json_t const* json, + std::shared_ptr builder) { + std::string tmp = toString(json); + arangodb::velocypack::Parser parser(builder); + try { + parser.parse(tmp); + } + catch (...) { + return TRI_ERROR_INTERNAL; + } + return TRI_ERROR_NO_ERROR; } };