From d84cd182e556b95279cde70b435f38edf6dbb757 Mon Sep 17 00:00:00 2001 From: Yves Date: Thu, 14 Aug 2025 12:24:53 -0700 Subject: [PATCH] Terminate watcher if database changes --- src/include/watcher.hpp | 1 + src/watcher.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/include/watcher.hpp b/src/include/watcher.hpp index bd178a1..33e12d6 100644 --- a/src/include/watcher.hpp +++ b/src/include/watcher.hpp @@ -26,6 +26,7 @@ private: std::condition_variable cv; std::atomic should_run; HttpServer &server; + DatabaseInstance *watched_database; }; } // namespace ui } // namespace duckdb diff --git a/src/watcher.cpp b/src/watcher.cpp index ef98a37..8b4b567 100644 --- a/src/watcher.cpp +++ b/src/watcher.cpp @@ -62,6 +62,12 @@ void Watcher::Watch() { break; // DB went away, nothing to watch } + if (watched_database == nullptr) { + watched_database = db.get(); + } else if (watched_database != db.get()) { + break; // DB changed, stop watching, will be restarted + } + duckdb::Connection con{*db}; auto polling_interval = GetPollingInterval(*con.context); if (polling_interval == 0) {