perf(daemon): skip the UI-thread datadir lock wait
Starting the daemon polls for an already-running node holding the datadir, sleeping up to three 100 ms intervals to let a shutting-down node clear out. When a start runs on the UI thread, that is up to 300 ms of blocking sleep on the render thread. - The lock-wait poll count is now a parameter. A start invoked on the UI thread passes 0, which does a single check and never sleeps; every other caller keeps the three-poll wait. The default is unchanged, so background starts behave exactly as before. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -5975,7 +5975,8 @@ bool App::startEmbeddedDaemon()
|
||||
|
||||
// Only a process we actually launched starts a new story: a start that finds a node already running (and
|
||||
// launches nothing) must not wipe what the tracker knows about that node from its debug.log.
|
||||
const bool launched = daemon_controller_->start(settings_.get());
|
||||
const bool launched = daemon_controller_->start(
|
||||
settings_.get(), std::this_thread::get_id() == ui_thread_id_ ? 0 : daemon::EmbeddedDaemon::kDatadirLockWaitMaxPolls);
|
||||
if (launched) resetDaemonBusy(); // a new process: whatever the last one was doing is over
|
||||
return launched;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user