Commit 0266cf4b by CaIon

fix: 修复渠道一致性问题

parent aa8b722a
...@@ -101,10 +101,12 @@ func Distribute() func(c *gin.Context) { ...@@ -101,10 +101,12 @@ func Distribute() func(c *gin.Context) {
channel, err = model.CacheGetRandomSatisfiedChannel(userGroup, modelRequest.Model) channel, err = model.CacheGetRandomSatisfiedChannel(userGroup, modelRequest.Model)
if err != nil { if err != nil {
message := fmt.Sprintf("当前分组 %s 下对于模型 %s 无可用渠道", userGroup, modelRequest.Model) message := fmt.Sprintf("当前分组 %s 下对于模型 %s 无可用渠道", userGroup, modelRequest.Model)
// 如果错误,但是渠道不为空,说明是数据库一致性问题
if channel != nil { if channel != nil {
common.SysError(fmt.Sprintf("渠道不存在:%d", channel.Id)) common.SysError(fmt.Sprintf("渠道不存在:%d", channel.Id))
message = "数据库一致性已被破坏,请联系管理员" message = "数据库一致性已被破坏,请联系管理员"
} }
// 如果错误,而且渠道为空,说明是没有可用渠道
abortWithMessage(c, http.StatusServiceUnavailable, message) abortWithMessage(c, http.StatusServiceUnavailable, message)
return return
} }
......
...@@ -159,5 +159,6 @@ func FixAbility() (int, error) { ...@@ -159,5 +159,6 @@ func FixAbility() (int, error) {
count++ count++
} }
} }
InitChannelCache()
return count, nil return count, nil
} }
...@@ -258,8 +258,8 @@ func CacheGetRandomSatisfiedChannel(group string, model string) (*Channel, error ...@@ -258,8 +258,8 @@ func CacheGetRandomSatisfiedChannel(group string, model string) (*Channel, error
return channel, nil return channel, nil
} }
} }
// return the last channel if no channel is found // return null if no channel is not found
return channels[endIdx-1], nil return nil, errors.New("channel not found")
} }
func CacheGetChannel(id int) (*Channel, error) { func CacheGetChannel(id int) (*Channel, error) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment