From cc6cc46099d2e006afc7f177c201ee9bac67267d Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" <rsmontero@opennebula.org> Date: Fri, 23 Jun 2017 00:13:27 +0200 Subject: [PATCH] F #4809: Add replicated log index information on server zones --- include/FedReplicaManager.h | 8 +++++++ src/cli/one_helper/onezone_helper.rb | 31 +++++++++++++++++++++++----- src/host/HostPool.cc | 2 -- src/raft/RaftManager.cc | 11 ++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/include/FedReplicaManager.h b/include/FedReplicaManager.h index 9a7e7e4bcd..e0142c1f1f 100644 --- a/include/FedReplicaManager.h +++ b/include/FedReplicaManager.h @@ -146,6 +146,14 @@ public: return frm_thread; }; + /** + * Return the last index of the fed log + */ + int get_last_index() const + { + return last_index; + } + private: friend void * frm_loop(void *arg); diff --git a/src/cli/one_helper/onezone_helper.rb b/src/cli/one_helper/onezone_helper.rb index 7d1c75ab74..32bf410794 100644 --- a/src/cli/one_helper/onezone_helper.rb +++ b/src/cli/one_helper/onezone_helper.rb @@ -147,14 +147,34 @@ class OneZoneHelper < OpenNebulaHelper::OneHelper when "3" then "leader" else "-" end - s["TERM"] = xml_doc.root.at_xpath("TERM").text + s["TERM"] = xml_doc.root.at_xpath("TERM").text s["VOTEDFOR"] = xml_doc.root.at_xpath("VOTEDFOR").text s["COMMIT"] = xml_doc.root.at_xpath("COMMIT").text - s["LOG_INDEX"] = xml_doc.root.at_xpath("LOG_INDEX").text + + s["LOG_INDEX"] = xml_doc.root.at_xpath("LOG_INDEX").text + s["FEDLOG_INDEX"] = xml_doc.root.at_xpath("FEDLOG_INDEX").text } puts - CLIHelper.print_header(str_h1 % "SERVERS",false) + CLIHelper.print_header(str_h1 % "ZONE SERVERS",false) + + CLIHelper::ShowTable.new(nil, self) do + + column :"ID", "", :size=>2 do |d| + d["ID"] if !d.nil? + end + + column :"NAME", "", :left, :size=>15 do |d| + d["NAME"] if !d.nil? + end + + column :"ENDPOINT", "", :left, :size=>63 do |d| + d["ENDPOINT"] if !d.nil? + end + end.show([zone_hash['ZONE']['SERVER_POOL']['SERVER']].flatten, {}) + + puts + CLIHelper.print_header(str_h1 % "RAFT & FEDERATION SYNC STATUS",false) CLIHelper::ShowTable.new(nil, self) do @@ -186,9 +206,10 @@ class OneZoneHelper < OpenNebulaHelper::OneHelper d["VOTEDFOR"] if !d.nil? end - column :"ENDPOINT", "", :left, :size=>18 do |d| - d["ENDPOINT"] if !d.nil? + column :"FED_INDEX", "", :left, :size=>10 do |d| + d["FEDLOG_INDEX"] if !d.nil? end + end.show([zone_hash['ZONE']['SERVER_POOL']['SERVER']].flatten, {}) end diff --git a/src/host/HostPool.cc b/src/host/HostPool.cc index bb88d3abf1..33c58b56c4 100644 --- a/src/host/HostPool.cc +++ b/src/host/HostPool.cc @@ -361,8 +361,6 @@ HostPool::HostVM * HostPool::get_host_vm(int oid) void HostPool::delete_host_vm(int oid) { - HostVM * hvm; - map<int, HostVM *>::iterator it = host_vms.find(oid); if ( it != host_vms.end() ) diff --git a/src/raft/RaftManager.cc b/src/raft/RaftManager.cc index d63ce4b5ab..fffa78b4e9 100644 --- a/src/raft/RaftManager.cc +++ b/src/raft/RaftManager.cc @@ -1176,6 +1176,8 @@ std::string& RaftManager::to_xml(std::string& raft_xml) Nebula& nd = Nebula::instance(); LogDB * logdb = nd.get_logdb(); + FedReplicaManager * frm = nd.get_frm(); + unsigned int lindex, lterm; std::ostringstream oss; @@ -1202,6 +1204,15 @@ std::string& RaftManager::to_xml(std::string& raft_xml) << "<LOG_TERM>" << lterm << "</LOG_TERM>"; } + if ( nd.is_federation_enabled() ) + { + oss << "<FEDLOG_INDEX>" << frm->get_last_index() << "</FEDLOG_INDEX>"; + } + else + { + oss << "<FEDLOG_INDEX>-1</FEDLOG_INDEX>"; + } + oss << "</RAFT>"; pthread_mutex_unlock(&mutex);