fix(provider-pool): 修正标记不健康提供者时的错误状态判断

将标记不健康提供者时的状态检查从 `status === 400` 改为 `error.code === 400`,确保正确识别客户端错误。同时在标记时传递错误信息给 `markProviderUnhealthy` 方法,以提供更详细的故障原因。
This commit is contained in:
hex2077 2026-02-09 21:58:45 +08:00
parent 138bd122cd
commit a7b29d9d48

View file

@ -494,14 +494,14 @@ export async function handleStreamRequest(res, service, model, requestBody, from
// 如果底层未标记,且不跳过错误计数,则在此处标记
if (!credentialMarkedUnhealthy && !skipErrorCount && providerPoolManager && pooluuid) {
// 400 报错码通常是请求参数问题,不记录为提供商错误
if (status === 400) {
if (error.code === 400) {
logger.info(`[Provider Pool] Skipping unhealthy marking for ${toProvider} (${pooluuid}) due to status 400 (client error)`);
} else {
logger.info(`[Provider Pool] Marking ${toProvider} as unhealthy due to stream error (status: ${status || 'unknown'})`);
// 如果是号池模式,并且请求处理失败,则标记当前使用的提供者为不健康
providerPoolManager.markProviderUnhealthy(toProvider, {
uuid: pooluuid
});
}, error.message);
credentialMarkedUnhealthy = true;
}
} else if (credentialMarkedUnhealthy) {
@ -695,14 +695,14 @@ export async function handleUnaryRequest(res, service, model, requestBody, fromP
// 如果底层未标记,且不跳过错误计数,则在此处标记
if (!credentialMarkedUnhealthy && !skipErrorCount && providerPoolManager && pooluuid) {
// 400 报错码通常是请求参数问题,不记录为提供商错误
if (status === 400) {
if (error.code === 400) {
logger.info(`[Provider Pool] Skipping unhealthy marking for ${toProvider} (${pooluuid}) due to status 400 (client error)`);
} else {
logger.info(`[Provider Pool] Marking ${toProvider} as unhealthy due to unary error (status: ${status || 'unknown'})`);
// 如果是号池模式,并且请求处理失败,则标记当前使用的提供者为不健康
providerPoolManager.markProviderUnhealthy(toProvider, {
uuid: pooluuid
});
}, error.message);
credentialMarkedUnhealthy = true;
}
} else if (credentialMarkedUnhealthy) {
@ -814,7 +814,7 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
// 如果是号池模式,并且请求处理失败,则标记当前使用的提供者为不健康
providerPoolManager.markProviderUnhealthy(toProvider, {
uuid: pooluuid
});
}, error.message);
}
}
}