fix(utils):修复代理池中的空指针异常

- 在遍历代理时跳过空代理对象
- 修正删除无效代理时的并发访问问题-优化代理过滤逻辑避免潜在崩溃
This commit is contained in:
danial
2025-10-28 23:25:58 +08:00
parent 00a53d8ab2
commit 7c2b8a5b0c
2 changed files with 15 additions and 12 deletions

View File

@@ -26,16 +26,16 @@ steps:
- docker push git.oceanpay.cc/danial/kami_gateway_${DRONE_BRANCH}:${DRONE_BUILD_NUMBER}
- docker push git.oceanpay.cc/danial/kami_gateway_${DRONE_BRANCH}:latest
- docker logout git.oceanpay.cc
- name: deploy to docker compose
environment:
DOCKER_LOGIN:
from_secret: docker_login
DOCKER_TOKEN:
from_secret: docker_token
commands:
- docker login git.oceanpay.cc -u $DOCKER_LOGIN -p $DOCKER_TOKEN
- BRANCH=${DRONE_BRANCH} VERSION=${DRONE_BUILD_NUMBER} docker compose -f /data/kami/docker-compose.yaml --profile gateway up -d
- docker logout git.oceanpay.cc
# - name: deploy to docker compose
# environment:
# DOCKER_LOGIN:
# from_secret: docker_login
# DOCKER_TOKEN:
# from_secret: docker_token
# commands:
# - docker login git.oceanpay.cc -u $DOCKER_LOGIN -p $DOCKER_TOKEN
# - BRANCH=${DRONE_BRANCH} VERSION=${DRONE_BUILD_NUMBER} docker compose -f /data/kami/docker-compose.yaml --profile gateway up -d
# - docker logout git.oceanpay.cc
trigger:
branch:

View File

@@ -201,6 +201,9 @@ func (p *OrderBasedProxyStrategy) getUnderLimitedProxy(ctx context.Context, perI
p.mu.RLock()
for _, proxies := range p.proxies {
for _, proxy := range proxies {
if proxy == nil {
continue
}
// 排除指定通道的代理
excluded := slices.Contains(excludeChannels, proxy.channel)
if !excluded {
@@ -221,8 +224,8 @@ func (p *OrderBasedProxyStrategy) getUnderLimitedProxy(ctx context.Context, perI
func() {
p.mu.Lock()
defer p.mu.Lock()
for _, infos := range p.proxies {
slices.DeleteFunc(infos, func(info *ProxyInfo) bool {
for index, infos := range p.proxies {
p.proxies[index] = slices.DeleteFunc(infos, func(info *ProxyInfo) bool {
return (info != nil && info.proxy == proxy) || info == nil
})
}