fix(FN-4907): invalidate stale settings caches on sync and provider writes

Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
This commit is contained in:
Fusion (runfusion.ai)
2026-05-17 10:07:08 -07:00
committed by gsxdsm
parent f6d6f0f4c0
commit 4416de159c
4 changed files with 37 additions and 0 deletions

View File

@@ -366,6 +366,8 @@ export async function runDaemon(opts: DaemonOptions = {}) {
peerExchangeService = new PeerExchangeService(sharedCentralCore);
try {
peerExchangeService.start();
const globalSettings = await store.getGlobalSettingsStore().getSettings();
peerExchangeService.updateGlobalSettings(globalSettings);
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.warn(`[daemon] Failed to start peer exchange service: ${message}`);
@@ -439,6 +441,13 @@ export async function runDaemon(opts: DaemonOptions = {}) {
const store = primaryEngine.getTaskStore();
store.on("settings:updated", () => {
if (!peerExchangeService) return;
void store.getGlobalSettingsStore().getSettings().then((globalSettings) => {
peerExchangeService?.updateGlobalSettings(globalSettings);
}).catch(() => undefined);
});
await store.watch();
// Set up database health check for diagnostics

View File

@@ -1406,6 +1406,11 @@ export async function runDashboard(port: number, opts: { paused?: boolean; dev?:
});
registerHandler(store, "settings:updated", ({ settings, previous }) => {
if (peerExchangeService) {
void store.getGlobalSettingsStore().getSettings().then((globalSettings) => {
peerExchangeService?.updateGlobalSettings(globalSettings);
}).catch(() => undefined);
}
const currentProviders = settings.customProviders;
const previousProviders = previous.customProviders;
if (JSON.stringify(currentProviders ?? []) === JSON.stringify(previousProviders ?? [])) {
@@ -1549,6 +1554,8 @@ export async function runDashboard(port: number, opts: { paused?: boolean; dev?:
peerExchangeService = new PeerExchangeService(centralCoreForEngine);
try {
peerExchangeService.start();
const globalSettings = await store.getGlobalSettingsStore().getSettings();
peerExchangeService.updateGlobalSettings(globalSettings);
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
logSink.warn(`Failed to start peer exchange service: ${message}`, "dashboard");
@@ -1764,6 +1771,8 @@ export async function runDashboard(port: number, opts: { paused?: boolean; dev?:
peerExchangeService = new PeerExchangeService(centralCoreForMesh);
peerExchangeService.start();
const globalSettings = await store.getGlobalSettingsStore().getSettings();
peerExchangeService.updateGlobalSettings(globalSettings);
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
logSink.warn(`Failed to initialize mesh networking: ${message}`, "dashboard");