From e6ffce8faf83f9937ae7c16b85bc349f8aa001d4 Mon Sep 17 00:00:00 2001 From: Arvin Schnell Date: Thu, 26 Sep 2024 18:30:24 +0200 Subject: [PATCH] - extended debug output --- server/Client.cc | 2 ++ server/MetaSnapper.cc | 14 +++++++++++++- server/MetaSnapper.h | 7 ++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/server/Client.cc b/server/Client.cc index 3ecda0e1..c1987350 100644 --- a/server/Client.cc +++ b/server/Client.cc @@ -1828,6 +1828,8 @@ Client::debug(DBus::Connection& conn, DBus::Message& msg) if (it->is_loaded()) { s << ", loaded"; + if (it->is_locked(clients)) + s << ", locked"; if (it->use_count() == 0) s << ", unused for " << duration_cast(it->unused_for()).count() << "ms"; else diff --git a/server/MetaSnapper.cc b/server/MetaSnapper.cc index e0f090bc..2c50ae53 100644 --- a/server/MetaSnapper.cc +++ b/server/MetaSnapper.cc @@ -1,6 +1,6 @@ /* * Copyright (c) [2012-2015] Novell, Inc. - * Copyright (c) [2018-2023] SUSE LLC + * Copyright (c) [2018-2024] SUSE LLC * * All Rights Reserved. * @@ -30,6 +30,7 @@ #include #include "MetaSnapper.h" +#include "Client.h" MetaSnappers meta_snappers; @@ -129,6 +130,17 @@ MetaSnapper::unload() } +bool +MetaSnapper::is_locked(const Clients& clients) const +{ + for (const Client& client : clients) + if (client.has_lock(configName())) + return true; + + return false; +} + + MetaSnappers::MetaSnappers() { } diff --git a/server/MetaSnapper.h b/server/MetaSnapper.h index a630295e..1111aad5 100644 --- a/server/MetaSnapper.h +++ b/server/MetaSnapper.h @@ -1,6 +1,6 @@ /* * Copyright (c) [2012-2015] Novell, Inc. - * Copyright (c) [2018-2023] SUSE LLC + * Copyright (c) [2018-2024] SUSE LLC * * All Rights Reserved. * @@ -36,6 +36,9 @@ using namespace std; using namespace snapper; +class Clients; + + struct UnknownConfig : public Exception { explicit UnknownConfig() : Exception("unknown config") {} @@ -65,6 +68,8 @@ class MetaSnapper : public RefCounter bool is_loaded() const { return snapper; } void unload(); + bool is_locked(const Clients& clients) const; + private: void set_permissions();