Merge pull request #2126 from QuantumNous/fix-randomWeight-panic
Some checks failed
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (amd64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Build & push (arm64) [native] (push) Has been cancelled
Publish Docker image (Multi Registries, native amd64+arm64) / Create multi-arch manifests (Docker Hub) (push) Has been cancelled
Release (Linux, macOS, Windows) / Linux Release (push) Has been cancelled
Release (Linux, macOS, Windows) / macOS Release (push) Has been cancelled
Release (Linux, macOS, Windows) / Windows Release (push) Has been cancelled

fix: 当totalWeight小于等于0时设置为1选择第一个渠道
This commit is contained in:
Seefs 2025-10-29 21:02:18 +09:00 committed by GitHub
commit 77da962823

View File

@ -166,6 +166,21 @@ func GetRandomSatisfiedChannel(group string, model string, retry int) (*Channel,
}
// Calculate the total weight of all channels up to endIdx
totalWeight := sumWeight * smoothingFactor
// totalWeight 小于等于0时给每个渠道加100的权重然后进行随机选择
if totalWeight <= 0 {
if len(targetChannels) > 0 {
totalWeight = len(targetChannels) * 100
randomWeight := rand.Intn(totalWeight)
for _, channel := range targetChannels {
randomWeight -= 100
if randomWeight <= 0 {
return channel, nil
}
}
}
return nil, errors.New("no available channels")
}
// Generate a random value in the range [0, totalWeight)
randomWeight := rand.Intn(totalWeight)