From c4f2a66f001e0b2072001ebaad62f7b9fdf6a2c2 Mon Sep 17 00:00:00 2001 From: Nipa Kumar Date: Tue, 6 Dec 2016 15:15:05 -0800 Subject: [PATCH] Daemons coring continuously when permission to /var/crashes is set to 750. NodeInformation is sent from each of the daemons periodically to nodemgr. control-node, dns and collector uses boost::filesystem::directory_iterator for traversal of directory /var/crashes. Each daemon runs with contrail user permission and due to permission mis-match boost::filesystem directory_iterator throws an exception thus aborting the daemon. There is no need to send list of core files anymore as the nodemgr collects these core files automatically. Remove the call and add try/catch for future usage of MiscUtils::GetCoreFileList api. Also changing execption log-level to ERROR instead of DEBUG. Change-Id: I152c548d3e303a314d0bfa5ec2c3516bf1cdf747 Closes-Bug:1647865 --- src/analytics/main.cc | 5 ----- src/base/misc_utils.cc | 39 ++------------------------------------- src/base/misc_utils.h | 1 - src/base/task.cc | 4 ++-- src/control-node/main.cc | 5 ----- src/dns/uve/uve.cc | 3 --- 6 files changed, 4 insertions(+), 53 deletions(-) diff --git a/src/analytics/main.cc b/src/analytics/main.cc index 9745597c12a..c18b2923dc0 100644 --- a/src/analytics/main.cc +++ b/src/analytics/main.cc @@ -93,11 +93,6 @@ bool CollectorSummaryLogger(Collector *collector, const string & hostname, vector ip_list; ip_list.push_back(Collector::GetSelfIp()); state.set_self_ip_list(ip_list); - vector list; - MiscUtils::GetCoreFileList(Collector::GetProgramName(), list); - if (list.size()) { - state.set_core_files_list(list); - } first = false; } if (!build_info_set) { diff --git a/src/base/misc_utils.cc b/src/base/misc_utils.cc index f5e197279fb..17ac0249b6f 100644 --- a/src/base/misc_utils.cc +++ b/src/base/misc_utils.cc @@ -4,14 +4,12 @@ #include #include -#include +#include #include #include #include #include #include -#include "boost/filesystem/operations.hpp" -#include "boost/filesystem/path.hpp" #include "base/sandesh/version_types.h" #include "base/logging.h" #include "rapidjson/document.h" @@ -19,11 +17,8 @@ #include "rapidjson/stringbuffer.h" using namespace std; -namespace fs = boost::filesystem; const std::string MiscUtils::ContrailVersionCmd = "/usr/bin/contrail-version"; -const std::string MiscUtils::CoreFileDir = "/var/crashes/"; -const int MiscUtils::MaxCoreFiles = 5; -const map MiscUtils::BuildModuleNames = +const map MiscUtils::BuildModuleNames = MiscUtils::MapInit(); SandeshTraceBufferPtr VersionTraceBuf(SandeshTraceBufferCreate( @@ -44,36 +39,6 @@ void MiscUtils::LogVersionInfo(const string build_info, Category::type categ) { } } -void MiscUtils::GetCoreFileList(string prog, vector &list) { - if (!fs::exists(CoreFileDir) || !fs::is_directory(CoreFileDir)) { - return; - } - FileMMap files_map; - - string filename = "core." + BaseName(prog) + "."; - - fs::path dir_path(CoreFileDir.c_str()); - fs::directory_iterator end_itr; - for (fs::directory_iterator itr(dir_path); itr != end_itr; itr++) { - if (fs::is_regular_file(itr->status())) { - const string file = itr->path().filename().generic_string(); - size_t pos = file.find(filename); - if (pos != 0) { - continue; - } - files_map.insert(FileMMap::value_type(fs::last_write_time - (itr->path()), file)); - } - } - FileMMap::reverse_iterator rit; - int count = 0; - for (rit = files_map.rbegin(); rit != files_map.rend() && - count < MaxCoreFiles; ++rit) { - count++; - list.push_back(rit->second); - } -} - bool MiscUtils::GetVersionInfoInternal(const string &cmd, string &rpm_version, string &build_num) { FILE *fp; diff --git a/src/base/misc_utils.h b/src/base/misc_utils.h index c564cd48108..1e741b2d14f 100644 --- a/src/base/misc_utils.h +++ b/src/base/misc_utils.h @@ -55,7 +55,6 @@ class MiscUtils { static const std::string CoreFileDir; static const int MaxCoreFiles; - static void GetCoreFileList(std::string prog, std::vector &list); static bool GetBuildInfo(BuildModule id, const std::string &build_info, std::string &result); static void GetHostIp(const std::string name, std::vector &ip_list); static void LogVersionInfo(const std::string str, Category::type categ); diff --git a/src/base/task.cc b/src/base/task.cc index 13306576362..fba528b7756 100644 --- a/src/base/task.cc +++ b/src/base/task.cc @@ -286,11 +286,11 @@ tbb::task *TaskImpl::execute() { // information from the core. static std::string what = e.what(); - LOG(DEBUG, "!!!! ERROR !!!! Task caught fatal exception: " << what + LOG(ERROR, "!!!! ERROR !!!! Task caught fatal exception: " << what << " TaskImpl: " << this); assert(0); } catch (...) { - LOG(DEBUG, "!!!! ERROR !!!! Task caught fatal unknown exception" + LOG(ERROR, "!!!! ERROR !!!! Task caught fatal unknown exception" << " TaskImpl: " << this); assert(0); } diff --git a/src/control-node/main.cc b/src/control-node/main.cc index 57ad9d0fda7..f3c2be3d4c1 100644 --- a/src/control-node/main.cc +++ b/src/control-node/main.cc @@ -325,11 +325,6 @@ bool ControlNodeInfoLogger(BgpServer *server, vector ip_list; ip_list.push_back(ControlNode::GetSelfIp()); state.set_bgp_router_ip_list(ip_list); - vector list; - MiscUtils::GetCoreFileList(ControlNode::GetProgramName(), list); - if (list.size()) { - state.set_core_files_list(list); - } } if (!build_info_set) { string build_info; diff --git a/src/dns/uve/uve.cc b/src/dns/uve/uve.cc index 4315f819ba5..76b73245873 100644 --- a/src/dns/uve/uve.cc +++ b/src/dns/uve/uve.cc @@ -22,9 +22,6 @@ void DnsUveClient::SendDnsUve(uint64_t start_time) { state.set_start_time(start_time); state.set_collector(Dns::GetCollector()); - vector list; - MiscUtils::GetCoreFileList(Dns::GetProgramName(), list); - state.set_core_files_list(list); vector ip_list; ip_list.push_back(Dns::GetSelfIp()); state.set_self_ip_list(ip_list);