perf: parallelize checkAllSources with Promise.allSettled
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
<v-icon>mdi-alert-circle</v-icon>
|
<v-icon>mdi-alert-circle</v-icon>
|
||||||
</v-avatar>
|
</v-avatar>
|
||||||
<div>
|
<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 class="text-caption">Failed Downloads</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
@@ -354,7 +354,7 @@ const sourcesWithErrors = computed(() => {
|
|||||||
return Array.from(sourceMap.values()).slice(0, 5)
|
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(() =>
|
const activeDownloadsCount = computed(() =>
|
||||||
(stats.value?.queued || 0) + (stats.value?.running || 0)
|
(stats.value?.queued || 0) + (stats.value?.running || 0)
|
||||||
)
|
)
|
||||||
@@ -461,16 +461,16 @@ async function checkAllSources() {
|
|||||||
checkingAll.value = true
|
checkingAll.value = true
|
||||||
try {
|
try {
|
||||||
const enabledSources = sourcesStore.sources.filter(s => s.enabled)
|
const enabledSources = sourcesStore.sources.filter(s => s.enabled)
|
||||||
let queued = 0
|
const results = await Promise.allSettled(
|
||||||
for (const source of enabledSources) {
|
enabledSources.map(source => sourcesStore.triggerCheck(source.id))
|
||||||
try {
|
)
|
||||||
await sourcesStore.triggerCheck(source.id)
|
const queued = results.filter(r => r.status === 'fulfilled').length
|
||||||
queued++
|
const failed = results.filter(r => r.status === 'rejected').length
|
||||||
} catch (e) {
|
if (failed > 0) {
|
||||||
console.error(`Failed to queue ${source.id}:`, e)
|
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 fetchActiveDownloads()
|
||||||
await downloadsStore.fetchStats()
|
await downloadsStore.fetchStats()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -483,7 +483,7 @@ async function checkAllSources() {
|
|||||||
async function retryAllFailed() {
|
async function retryAllFailed() {
|
||||||
retryingAll.value = true
|
retryingAll.value = true
|
||||||
try {
|
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
|
const failed = response.items
|
||||||
let retried = 0
|
let retried = 0
|
||||||
for (const dl of failed) {
|
for (const dl of failed) {
|
||||||
|
|||||||
Reference in New Issue
Block a user