This commit is contained in:
Frank
2026-06-30 03:23:50 -04:00
parent 6b074ed718
commit b19ae6547f
@@ -587,7 +587,10 @@ export async function handler(
})) }))
} }
if (retry.retryCount !== MAX_FAILOVER_RETRIES) { // Use fallback provider if max retries reached
const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider)
if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider
let topPriority = Infinity let topPriority = Infinity
const providers = allProviders const providers = allProviders
.filter((provider) => provider.weight !== 0) .filter((provider) => provider.weight !== 0)
@@ -625,7 +628,7 @@ export async function handler(
h = (h * 31 + stickyId.charCodeAt(i)) | 0 // 32-bit int h = (h * 31 + stickyId.charCodeAt(i)) | 0 // 32-bit int
} }
const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1 const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1
const provider = providers[index || 0] const provider = providers[index || 0] ?? fallbackProvider
// sticky provider does not exist => use selected provider // sticky provider does not exist => use selected provider
if (!stickyProviderId) return provider if (!stickyProviderId) return provider
@@ -647,10 +650,6 @@ export async function handler(
if (!preferBudgetProvider && !preferTpsProvider) return stickProvider if (!preferBudgetProvider && !preferTpsProvider) return stickProvider
return provider return provider
}
// fallback provider
return allProviders.find((provider) => provider.id === modelInfo.fallbackProvider)
})() })()
if (!modelProvider) throw new ModelError(t("zen.api.error.noProviderAvailable")) if (!modelProvider) throw new ModelError(t("zen.api.error.noProviderAvailable"))