From cda289ff51b9057473751eaaada271b5aca6ae9a Mon Sep 17 00:00:00 2001 From: Eric Cano <Eric.Cano@cern.ch> Date: Fri, 18 Aug 2017 12:31:14 +0200 Subject: [PATCH] Added more timing logs. --- scheduler/Scheduler.cpp | 36 ++++++++++++++++++++++++++++-------- scheduler/Scheduler.hpp | 8 ++++---- scheduler/SchedulerTest.cpp | 6 +++--- xroot_plugins/XrdCtaFile.cpp | 10 ++++++---- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp index a3ade7eef4..5645a6e32f 100644 --- a/scheduler/Scheduler.cpp +++ b/scheduler/Scheduler.cpp @@ -387,37 +387,57 @@ void Scheduler::reportDriveStatus(const common::dataStructures::DriveInfo& drive log::ScopedParamContainer spc(lc); spc.add("drive", driveInfo.driveName) .add("schedulerDbTime", schedulerDbTime); - lc.log(log::INFO, "In Scheduler::reportDriveStatus(): success."); + lc.log(log::INFO, "In Scheduler::reportDriveStatus(): success."); } //------------------------------------------------------------------------------ // getPendingArchiveJobs //------------------------------------------------------------------------------ -std::map<std::string, std::list<common::dataStructures::ArchiveJob> > Scheduler::getPendingArchiveJobs() const { - return m_db.getArchiveJobs(); +std::map<std::string, std::list<common::dataStructures::ArchiveJob> > Scheduler::getPendingArchiveJobs(log::LogContext & lc) const { + utils::Timer t; + auto ret = m_db.getArchiveJobs(); + auto schedulerDbTime = t.secs(); + log::ScopedParamContainer spc(lc); + spc.add("schedulerDbTime", schedulerDbTime); + lc.log(log::INFO, "In Scheduler::getPendingArchiveJobs(): success."); + return ret; } //------------------------------------------------------------------------------ // getPendingArchiveJobs //------------------------------------------------------------------------------ -std::list<common::dataStructures::ArchiveJob> Scheduler::getPendingArchiveJobs(const std::string &tapePoolName) const { +std::list<common::dataStructures::ArchiveJob> Scheduler::getPendingArchiveJobs(const std::string &tapePoolName, log::LogContext & lc) const { + utils::Timer t; if(!m_catalogue.tapePoolExists(tapePoolName)) { throw exception::Exception(std::string("Tape pool ") + tapePoolName + " does not exist"); } - return m_db.getArchiveJobs(tapePoolName); + auto catalogueTime = t.secs(utils::Timer::resetCounter); + auto ret = m_db.getArchiveJobs(tapePoolName); + auto schedulerDbTime = t.secs(); + log::ScopedParamContainer spc(lc); + spc.add("catalogueTime", catalogueTime) + .add("schedulerDbTime", schedulerDbTime); + lc.log(log::INFO, "In Scheduler::getPendingArchiveJobs(tapePool): success."); + return ret; } //------------------------------------------------------------------------------ // getPendingRetrieveJobs //------------------------------------------------------------------------------ -std::map<std::string, std::list<common::dataStructures::RetrieveJob> > Scheduler::getPendingRetrieveJobs() const { - return m_db.getRetrieveJobs(); +std::map<std::string, std::list<common::dataStructures::RetrieveJob> > Scheduler::getPendingRetrieveJobs(log::LogContext & lc) const { + utils::Timer t; + auto ret = m_db.getRetrieveJobs(); + auto schedulerDbTime = t.secs(); + log::ScopedParamContainer spc(lc); + spc.add("schedulerDbTime", schedulerDbTime); + lc.log(log::INFO, "In Scheduler::getPendingRetrieveJobs(): success."); + return ret; } //------------------------------------------------------------------------------ // getPendingRetrieveJobs //------------------------------------------------------------------------------ -std::list<common::dataStructures::RetrieveJob> Scheduler::getPendingRetrieveJobs(const std::string& vid) const { +std::list<common::dataStructures::RetrieveJob> Scheduler::getPendingRetrieveJobs(const std::string& vid, log::LogContext &lc) const { throw exception::Exception(std::string("Not implemented: ") + __PRETTY_FUNCTION__); } diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp index 6765c632c4..49a9f93ee2 100644 --- a/scheduler/Scheduler.hpp +++ b/scheduler/Scheduler.hpp @@ -189,10 +189,10 @@ public: const cta::common::dataStructures::TestSourceType testSourceType, const std::string &tag) const; - std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > getPendingArchiveJobs() const; - std::list<cta::common::dataStructures::ArchiveJob> getPendingArchiveJobs(const std::string &tapePoolName) const; - std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > getPendingRetrieveJobs() const; - std::list<cta::common::dataStructures::RetrieveJob> getPendingRetrieveJobs(const std::string &vid) const; + std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > getPendingArchiveJobs(log::LogContext &lc) const; + std::list<cta::common::dataStructures::ArchiveJob> getPendingArchiveJobs(const std::string &tapePoolName, log::LogContext &lc) const; + std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > getPendingRetrieveJobs(log::LogContext &lc) const; + std::list<cta::common::dataStructures::RetrieveJob> getPendingRetrieveJobs(const std::string &vid, log::LogContext &lc) const; /*============== Drive state management ====================================*/ CTA_GENERATE_EXCEPTION_CLASS(NoSuchDrive); diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp index d81e1da97c..a9070717b6 100644 --- a/scheduler/SchedulerTest.cpp +++ b/scheduler/SchedulerTest.cpp @@ -265,7 +265,7 @@ TEST_P(SchedulerTest, archive_to_new_file) { scheduler.queueArchive(s_diskInstance, request, lc); { - auto rqsts = scheduler.getPendingArchiveJobs(); + auto rqsts = scheduler.getPendingArchiveJobs(lc); ASSERT_EQ(1, rqsts.size()); auto poolItor = rqsts.cbegin(); ASSERT_FALSE(poolItor == rqsts.cend()); @@ -401,7 +401,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) { // (otherwise we miss the selected ones). // Could also be limited to querying by ID (global index needed) bool found=false; - for (auto & tp: scheduler.getPendingArchiveJobs()) { + for (auto & tp: scheduler.getPendingArchiveJobs(lc)) { for (auto & req: tp.second) { if (req.archiveFileID == archiveFileId) found = true; @@ -490,7 +490,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) { // Check that the retrieve request is queued { - auto rqsts = scheduler.getPendingRetrieveJobs(); + auto rqsts = scheduler.getPendingRetrieveJobs(lc); // We expect 1 tape with queued jobs ASSERT_EQ(1, rqsts.size()); // We expect the queue to contain 1 job diff --git a/xroot_plugins/XrdCtaFile.cpp b/xroot_plugins/XrdCtaFile.cpp index 213848637b..d82b1be2fc 100644 --- a/xroot_plugins/XrdCtaFile.cpp +++ b/xroot_plugins/XrdCtaFile.cpp @@ -1927,6 +1927,7 @@ std::string XrdCtaFile::xCom_drive() { // xCom_listpendingarchives //------------------------------------------------------------------------------ std::string XrdCtaFile::xCom_listpendingarchives() { + log::LogContext lc(m_log); std::stringstream cmdlineOutput; std::stringstream help; help << m_requestTokens.at(0) << " lpa/listpendingarchives [--header/-h] [--tapepool/-t <tapepool_name>] [--extended/-x]" << std::endl; @@ -1934,10 +1935,10 @@ std::string XrdCtaFile::xCom_listpendingarchives() { bool extended = hasOption("-x", "--extended"); std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > result; if(!tapepool) { - result = m_scheduler->getPendingArchiveJobs(); + result = m_scheduler->getPendingArchiveJobs(lc); } else { - std::list<cta::common::dataStructures::ArchiveJob> list = m_scheduler->getPendingArchiveJobs(tapepool.value()); + std::list<cta::common::dataStructures::ArchiveJob> list = m_scheduler->getPendingArchiveJobs(tapepool.value(), lc); if(list.size()>0) { result[tapepool.value()] = list; } @@ -1994,15 +1995,16 @@ std::string XrdCtaFile::xCom_listpendingarchives() { std::string XrdCtaFile::xCom_listpendingretrieves() { std::stringstream cmdlineOutput; std::stringstream help; + log::LogContext lc(m_log); help << m_requestTokens.at(0) << " lpr/listpendingretrieves [--header/-h] [--vid/-v <vid>] [--extended/-x]" << std::endl; optional<std::string> vid = getOptionStringValue("-v", "--vid", false, false); bool extended = hasOption("-x", "--extended"); std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > result; if(!vid) { - result = m_scheduler->getPendingRetrieveJobs(); + result = m_scheduler->getPendingRetrieveJobs(lc); } else { - std::list<cta::common::dataStructures::RetrieveJob> list = m_scheduler->getPendingRetrieveJobs(vid.value()); + std::list<cta::common::dataStructures::RetrieveJob> list = m_scheduler->getPendingRetrieveJobs(vid.value(), lc); if(list.size()>0) { result[vid.value()] = list; } -- GitLab