From fc94b2c2654ed470bdb1cc3b6dcf2d78abf820da Mon Sep 17 00:00:00 2001 From: Roman Gershman Date: Wed, 29 Jan 2025 19:08:41 +0200 Subject: [PATCH] chore: add more logs to the op_manager code (#4527) Signed-off-by: Roman Gershman --- .github/workflows/ci.yml | 2 +- src/server/tiering/common.h | 4 ++++ src/server/tiering/op_manager.cc | 13 +++++++++++++ src/server/tiering/op_manager_test.cc | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 572fea4c2..935d94bcb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -171,7 +171,7 @@ jobs: run: | cd ${GITHUB_WORKSPACE}/build echo Run ctest -V -L DFLY - GLOG_alsologtostderr=1 GLOG_vmodule=rdb_load=1,rdb_save=1,snapshot=1 \ + GLOG_alsologtostderr=1 GLOG_vmodule=rdb_load=1,rdb_save=1,snapshot=1,op_manager=1,op_manager_test=1 \ FLAGS_fiber_safety_margin=4096 FLAGS_list_experimental_v2=true timeout 20m ctest -V -L DFLY echo "Running tests with --force_epoll" diff --git a/src/server/tiering/common.h b/src/server/tiering/common.h index 13de4fe99..778391d2d 100644 --- a/src/server/tiering/common.h +++ b/src/server/tiering/common.h @@ -42,6 +42,10 @@ struct DiskSegment { } size_t offset = 0, length = 0; + + friend std::ostream& operator<<(std::ostream& os, const DiskSegment& ds) { + return os << "[" << ds.offset << ", " << ds.length << "]"; + } }; }; // namespace dfly::tiering diff --git a/src/server/tiering/op_manager.cc b/src/server/tiering/op_manager.cc index 36d9c2360..5e727d67c 100644 --- a/src/server/tiering/op_manager.cc +++ b/src/server/tiering/op_manager.cc @@ -28,6 +28,16 @@ OpManager::EntryId Borrowed(const OpManager::OwnedEntryId& id) { return std::visit([](const auto& v) -> OpManager::EntryId { return v; }, id); } +std::ostream& operator<<(std::ostream& os, const OpManager::EntryId& id) { + if (const auto* i = std::get_if(&id); i) { + return os << *i; + } else { + const auto& key = std::get(id); + return os << "(" << key.first << ':' << key.second << ")"; + } + return os; +} + } // namespace OpManager::OpManager(size_t max_size) : storage_{max_size} { @@ -115,7 +125,10 @@ void OpManager::ProcessStashed(EntryId id, unsigned version, NotifyStashed(id, segment); } else if (segment) { // Throw away the value because it's no longer up-to-date even if no error occured + VLOG(1) << "Releasing segment " << *segment << ", id: " << id; storage_.MarkAsFree(*segment); + } else { + LOG(ERROR) << "Stash failed with error " << segment.error(); } } diff --git a/src/server/tiering/op_manager_test.cc b/src/server/tiering/op_manager_test.cc index 9eb0c8641..dc3f00d50 100644 --- a/src/server/tiering/op_manager_test.cc +++ b/src/server/tiering/op_manager_test.cc @@ -54,6 +54,7 @@ struct OpManagerTest : PoolTestBase, OpManager { } void NotifyStashed(EntryId id, const io::Result& segment) override { + VLOG(1) << std::get<0>(id) << " stashed"; ASSERT_TRUE(segment); auto [it, inserted] = stashed_.emplace(id, *segment); ASSERT_TRUE(inserted);