Skip to content

Commit

Permalink
feat: Updated gateway/internal/router/priority.go
Browse files Browse the repository at this point in the history
  • Loading branch information
sweep-ai[bot] committed Mar 22, 2024
1 parent d37b54b commit 4ddece2
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions gateway/internal/router/priority.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package router

import (
"sync/atomic"
"log"
"gateway/internal/router" // Importing to use HealthChecker
)

const (
Expand All @@ -21,11 +23,20 @@ func NewPriorityRouter(providers []RouterConfig) *PriorityRouter {
}

func (r *PriorityRouter) Next() (*RouterConfig, error) {
idx := int(r.idx.Load())

// Todo: make a check for healthy provider
model := &r.providers[idx]
r.idx.Add(1)

return model, nil
providerLen := len(r.providers)
originalIdx := r.idx.Load()
var healthyProvider *RouterConfig
for i := 0; i < providerLen; i++ {
idx := (originalIdx + uint64(i)) % uint64(providerLen)
if router.DefaultHealthChecker{}.IsHealthy(r.providers[idx].Name) {
healthyProvider = &r.providers[idx]
r.idx.Store(idx + 1)
break
}
}
if healthyProvider == nil {
log.Println("Error: No healthy providers available.")
return nil, fmt.Errorf("no healthy providers available")
}
return healthyProvider, nil
}

0 comments on commit 4ddece2

Please sign in to comment.