From 4eac527f0f25dfd2f7dc18b8f2ae8c9105c020e1 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 18 Mar 2026 23:36:33 -0400 Subject: [PATCH] perf: parallelize checkAllSources with Promise.allSettled --- frontend/src/views/Dashboard.vue | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/frontend/src/views/Dashboard.vue b/frontend/src/views/Dashboard.vue index dcd6036..481354f 100644 --- a/frontend/src/views/Dashboard.vue +++ b/frontend/src/views/Dashboard.vue @@ -37,7 +37,7 @@ mdi-alert-circle
-
{{ stats?.failed || 0 }}
+
{{ stats?.active_failed || 0 }}
Failed Downloads
@@ -354,7 +354,7 @@ const sourcesWithErrors = computed(() => { return Array.from(sourceMap.values()).slice(0, 5) }) -const failedCount = computed(() => stats.value?.failed || 0) +const failedCount = computed(() => stats.value?.active_failed || 0) const activeDownloadsCount = computed(() => (stats.value?.queued || 0) + (stats.value?.running || 0) ) @@ -461,16 +461,16 @@ async function checkAllSources() { checkingAll.value = true try { const enabledSources = sourcesStore.sources.filter(s => s.enabled) - let queued = 0 - for (const source of enabledSources) { - try { - await sourcesStore.triggerCheck(source.id) - queued++ - } catch (e) { - console.error(`Failed to queue ${source.id}:`, e) - } + const results = await Promise.allSettled( + enabledSources.map(source => sourcesStore.triggerCheck(source.id)) + ) + const queued = results.filter(r => r.status === 'fulfilled').length + const failed = results.filter(r => r.status === 'rejected').length + if (failed > 0) { + notifications.success(`Queued ${queued} sources (${failed} failed to queue)`) + } else { + notifications.success(`Queued checks for ${queued} sources`) } - notifications.success(`Queued checks for ${queued} sources`) await fetchActiveDownloads() await downloadsStore.fetchStats() } catch (error) { @@ -483,7 +483,7 @@ async function checkAllSources() { async function retryAllFailed() { retryingAll.value = true try { - const response = await downloadsStore.fetchDownloads({ status: 'failed', per_page: 100 }) + const response = await downloadsStore.fetchDownloads({ status: 'failed', per_page: 100, exclude_superseded: true }) const failed = response.items let retried = 0 for (const dl of failed) {