perf: parallelize checkAllSources with Promise.allSettled
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
<v-icon>mdi-alert-circle</v-icon>
|
||||
</v-avatar>
|
||||
<div>
|
||||
<div class="text-h4">{{ stats?.failed || 0 }}</div>
|
||||
<div class="text-h4">{{ stats?.active_failed || 0 }}</div>
|
||||
<div class="text-caption">Failed Downloads</div>
|
||||
</div>
|
||||
</v-card-text>
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user