diff --git a/src/http_server.cpp b/src/http_server.cpp index 70fd0ae..f43f6f5 100644 --- a/src/http_server.cpp +++ b/src/http_server.cpp @@ -40,18 +40,21 @@ void HttpServer::UpdateDatabaseInstanceIfRunning( void HttpServer::UpdateDatabaseInstance( shared_ptr context_db) { const auto current_db = server_instance->LockDatabaseInstance(); - if (current_db != context_db) { - auto watcher_stopped = false; - if (server_instance->watcher) { - server_instance->watcher->Stop(); - server_instance->watcher = nullptr; - watcher_stopped = true; - } - server_instance->ddb_instance = context_db; - if (watcher_stopped) { - server_instance->watcher = make_uniq(*this); - server_instance->watcher->Start(); - } + if (current_db == context_db) { + return; + } + + bool has_watcher = !!server_instance->watcher; + if (has_watcher) { + server_instance->watcher->Stop(); + server_instance->watcher = nullptr; + } + + server_instance->ddb_instance = context_db; + + if (has_watcher) { + server_instance->watcher = make_uniq(*this); + server_instance->watcher->Start(); } } @@ -64,11 +67,7 @@ bool HttpServer::IsRunningOnMachine(ClientContext &context) { auto local_url = StringUtil::Format("http://localhost:%d", local_port); httplib::Client client(local_url); - auto result = client.Get("/info"); - if (result) { - return true; - } - return false; + return client.Get("/info"); } bool HttpServer::Started() { @@ -204,6 +203,7 @@ void HttpServer::HandleGetLocalEvents(const httplib::Request &req, if (event_dispatcher->WaitEvent(&sink)) { return true; } + sink.done(); return false; }); diff --git a/src/watcher.cpp b/src/watcher.cpp index 9e64b44..ef98a37 100644 --- a/src/watcher.cpp +++ b/src/watcher.cpp @@ -9,7 +9,7 @@ namespace duckdb { namespace ui { -Watcher::Watcher(HttpServer &_server) : server(_server), should_run(false) {} +Watcher::Watcher(HttpServer &_server) : should_run(false), server(_server) {} bool WasCatalogUpdated(DatabaseInstance &db, Connection &connection, CatalogState &last_state) {