From 5668e6e524d5e43b9a08af2a4b33ba8e652f500a Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Thu, 9 Jun 2016 10:51:46 +0200 Subject: [PATCH] Agency changes. --- arangod/Agency/CleanOutServer.cpp | 13 +++++++++---- arangod/Agency/FailedLeader.cpp | 5 +++-- arangod/Agency/FailedServer.cpp | 9 +++++++-- arangod/Agency/MoveShard.cpp | 7 ++++--- arangod/Agency/Supervision.cpp | 9 +++++++++ 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/arangod/Agency/CleanOutServer.cpp b/arangod/Agency/CleanOutServer.cpp index c07d7b5846..6707c38faa 100644 --- a/arangod/Agency/CleanOutServer.cpp +++ b/arangod/Agency/CleanOutServer.cpp @@ -40,8 +40,9 @@ CleanOutServer::CleanOutServer ( if (js == TODO) { start(); } else if (js == NOTFOUND) { - create(); - start(); + if (create()) { + start(); + } } } catch (std::exception const& e) { LOG_TOPIC(WARN, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__; @@ -79,23 +80,27 @@ JOB_STATUS CleanOutServer::status () { for (auto const& subJob : todos) { if (!subJob.first.compare(0, _jobId.size()+1, _jobId + "-")) { found++; +#if 0 Node const& sj = *(subJob.second); std::string subJobId = sj("jobId").slice().copyString(); std::string creator = sj("creator").slice().copyString(); MoveShard(_snapshot, _agent, subJobId, creator, _agencyPrefix); +#endif } } for (auto const& subJob : pends) { if (!subJob.first.compare(0, _jobId.size()+1, _jobId + "-")) { found++; +#if 0 Node const& sj = *(subJob.second); std::string subJobId = sj("jobId").slice().copyString(); std::string creator = sj("creator").slice().copyString(); MoveShard(_snapshot, _agent, subJobId, creator, _agencyPrefix); +#endif } } - if (!found) { + if (found == 0) { if (finish("DBServers/" + _server)) { return FINISHED; } @@ -121,7 +126,7 @@ bool CleanOutServer::start() { _snapshot(toDoPrefix + _jobId).toBuilder(todo); todo.close(); - // Enter peding, remove todo, block toserver + // Enter pending, remove todo, block toserver pending.openArray(); // --- Add pending diff --git a/arangod/Agency/FailedLeader.cpp b/arangod/Agency/FailedLeader.cpp index f597bccdae..2474d257e1 100644 --- a/arangod/Agency/FailedLeader.cpp +++ b/arangod/Agency/FailedLeader.cpp @@ -42,8 +42,9 @@ FailedLeader::FailedLeader( if (js == TODO) { start(); } else if (js == NOTFOUND) { - create(); - start(); + if (create()) { + start(); + } } } catch (std::exception const& e) { LOG_TOPIC(WARN, Logger::AGENCY) << e.what(); diff --git a/arangod/Agency/FailedServer.cpp b/arangod/Agency/FailedServer.cpp index aace4bf194..1e73a39d78 100644 --- a/arangod/Agency/FailedServer.cpp +++ b/arangod/Agency/FailedServer.cpp @@ -43,8 +43,9 @@ FailedServer::FailedServer(Node const& snapshot, if (js == TODO) { start(); } else if (js == NOTFOUND) { - create(); - start(); + if (create()) { + start(); + } } } catch (std::exception const& e) { LOG_TOPIC(WARN, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__; @@ -219,19 +220,23 @@ JOB_STATUS FailedServer::status () { for (auto const& subJob : todos) { if (!subJob.first.compare(0, _jobId.size()+1, _jobId + "-")) { found++; +#if 0 Node const& sj = *(subJob.second); std::string subJobId = sj("jobId").slice().copyString(); std::string creator = sj("creator").slice().copyString(); FailedLeader(_snapshot, _agent, subJobId, creator, _agencyPrefix); +#endif } } for (auto const& subJob : pends) { if (!subJob.first.compare(0, _jobId.size()+1, _jobId + "-")) { found++; +#if 0 Node const& sj = *(subJob.second); std::string subJobId = sj("jobId").slice().copyString(); std::string creator = sj("creator").slice().copyString(); FailedLeader(_snapshot, _agent, subJobId, creator, _agencyPrefix); +#endif } } diff --git a/arangod/Agency/MoveShard.cpp b/arangod/Agency/MoveShard.cpp index 7b87aacf75..29175dcf41 100644 --- a/arangod/Agency/MoveShard.cpp +++ b/arangod/Agency/MoveShard.cpp @@ -42,8 +42,9 @@ MoveShard::MoveShard (Node const& snapshot, Agent* agent, if (js == TODO) { start(); } else if (js == NOTFOUND) { - create(); - start(); + if (create()) { + start(); + } } } catch (std::exception const& e) { LOG_TOPIC(WARN, Logger::AGENCY) << e.what() << __FILE__ << __LINE__; @@ -138,7 +139,7 @@ bool MoveShard::start() { } todo.close(); - // Enter peding, remove todo, block toserver + // Enter pending, remove todo, block toserver pending.openArray(); // --- Add pending diff --git a/arangod/Agency/Supervision.cpp b/arangod/Agency/Supervision.cpp index 4ff71ae096..486a50442b 100644 --- a/arangod/Agency/Supervision.cpp +++ b/arangod/Agency/Supervision.cpp @@ -27,6 +27,7 @@ #include "CleanOutServer.h" #include "FailedLeader.h" #include "FailedServer.h" +#include "MoveShard.h" #include "Job.h" #include "Store.h" @@ -313,6 +314,10 @@ void Supervision::workJobs() { FailedServer fs(_snapshot, _agent, jobId, creator, _agencyPrefix); } else if (jobType == "cleanOutServer") { CleanOutServer cos(_snapshot, _agent, jobId, creator, _agencyPrefix); + } else if (jobType == "moveShard") { + MoveShard mv(_snapshot, _agent, jobId, creator, _agencyPrefix); + } else if (jobType == "failedLeader") { + FailedLeader fl(_snapshot, _agent, jobId, creator, _agencyPrefix); } } catch (std::exception const&) {} } @@ -328,6 +333,10 @@ void Supervision::workJobs() { FailedServer fs(_snapshot, _agent, jobId, creator, _agencyPrefix); } else if (jobType == "cleanOutServer") { CleanOutServer cos(_snapshot, _agent, jobId, creator, _agencyPrefix); + } else if (jobType == "moveShard") { + MoveShard mv(_snapshot, _agent, jobId, creator, _agencyPrefix); + } else if (jobType == "failedLeader") { + FailedLeader fl(_snapshot, _agent, jobId, creator, _agencyPrefix); } } catch (std::exception const&) {} }