feat: retain polling index for multi-key channels during sync
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"one-api/common"
|
"one-api/common"
|
||||||
|
"one-api/constant"
|
||||||
"one-api/setting"
|
"one-api/setting"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -66,6 +67,15 @@ func InitChannelCache() {
|
|||||||
|
|
||||||
channelSyncLock.Lock()
|
channelSyncLock.Lock()
|
||||||
group2model2channels = newGroup2model2channels
|
group2model2channels = newGroup2model2channels
|
||||||
|
//channelsIDM = newChannelId2channel
|
||||||
|
for i, channel := range newChannelId2channel {
|
||||||
|
if oldChannel, ok := channelsIDM[i]; ok {
|
||||||
|
// 存在旧的渠道,如果是多key且轮询,保留轮询索引信息
|
||||||
|
if oldChannel.ChannelInfo.IsMultiKey && oldChannel.ChannelInfo.MultiKeyMode == constant.MultiKeyModePolling {
|
||||||
|
channel.ChannelInfo.MultiKeyPollingIndex = oldChannel.ChannelInfo.MultiKeyPollingIndex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
channelsIDM = newChannelId2channel
|
channelsIDM = newChannelId2channel
|
||||||
channelSyncLock.Unlock()
|
channelSyncLock.Unlock()
|
||||||
common.SysLog("channels synced from database")
|
common.SysLog("channels synced from database")
|
||||||
@@ -203,9 +213,6 @@ func CacheGetChannel(id int) (*Channel, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("渠道# %d,已不存在", id)
|
return nil, fmt.Errorf("渠道# %d,已不存在", id)
|
||||||
}
|
}
|
||||||
if c.Status != common.ChannelStatusEnabled {
|
|
||||||
return nil, fmt.Errorf("渠道# %d,已被禁用", id)
|
|
||||||
}
|
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,9 +231,6 @@ func CacheGetChannelInfo(id int) (*ChannelInfo, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("渠道# %d,已不存在", id)
|
return nil, fmt.Errorf("渠道# %d,已不存在", id)
|
||||||
}
|
}
|
||||||
if c.Status != common.ChannelStatusEnabled {
|
|
||||||
return nil, fmt.Errorf("渠道# %d,已被禁用", id)
|
|
||||||
}
|
|
||||||
return &c.ChannelInfo, nil
|
return &c.ChannelInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user