Skip to content

Commit 309e16a

Browse files
committed
Refactor Redis configuration handling in KV cache scorer
Replace direct Redis address assignment with URL parsing for better configuration management. This ensures proper error handling and compatibility with Redis connection options. Added Redis client dependency to facilitate this change. Signed-off-by: Tyler Lisowski <lisowski@us.ibm.com>
1 parent f6c57c5 commit 309e16a

File tree

4 files changed

+42
-5
lines changed

4 files changed

+42
-5
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ require (
1010
github.com/go-logr/logr v1.4.2
1111
github.com/google/go-cmp v0.7.0
1212
github.com/hashicorp/golang-lru/v2 v2.0.7
13-
github.com/llm-d/llm-d-kv-cache-manager v0.1.0
13+
github.com/llm-d/llm-d-kv-cache-manager v0.1.1
1414
github.com/prometheus/client_golang v1.22.0
15+
github.com/redis/go-redis/v9 v9.7.3
1516
github.com/stretchr/testify v1.10.0
1617
go.uber.org/zap v1.27.0
1718
google.golang.org/grpc v1.72.0
@@ -65,7 +66,6 @@ require (
6566
github.com/prometheus/client_model v0.6.2 // indirect
6667
github.com/prometheus/common v0.64.0 // indirect
6768
github.com/prometheus/procfs v0.15.1 // indirect
68-
github.com/redis/go-redis/v9 v9.7.3 // indirect
6969
github.com/spf13/cobra v1.9.1 // indirect
7070
github.com/spf13/pflag v1.0.6 // indirect
7171
github.com/stoewer/go-strcase v1.3.0 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
9898
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
9999
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
100100
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
101-
github.com/llm-d/llm-d-kv-cache-manager v0.1.0 h1:TabMsVni2AqxsfQtcT3jVjSPvExlbTieJejSVNwlkZ0=
102-
github.com/llm-d/llm-d-kv-cache-manager v0.1.0/go.mod h1:Hu7RvpUg5sP1xnQFfO2dbt96AjGPWKuUvWBWiHj/FUU=
101+
github.com/llm-d/llm-d-kv-cache-manager v0.1.1 h1:k3dpbnXdQ8JBz6tYtaUba58/YVuxiJ6O3Um4bJEjR3I=
102+
github.com/llm-d/llm-d-kv-cache-manager v0.1.1/go.mod h1:Hu7RvpUg5sP1xnQFfO2dbt96AjGPWKuUvWBWiHj/FUU=
103103
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
104104
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
105105
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

pkg/config/config_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package config
2+
3+
import (
4+
"github.com/redis/go-redis/v9"
5+
"strings"
6+
7+
//"github.com/redis/go-redis/v9"
8+
"github.com/stretchr/testify/assert"
9+
"testing"
10+
)
11+
12+
func TestURLParse(t *testing.T) {
13+
urlInst := "bd73f810-0eea-46a9-b330-84c9bc36d00d.blrrvkdw0thh68l98t20.private.databases.appdomain.cloud:31394"
14+
if !(strings.HasPrefix(urlInst, "redis://") || strings.HasPrefix(urlInst, "rediss://") || strings.HasPrefix(urlInst, "unix://")) {
15+
urlInst = "redis://" + urlInst
16+
}
17+
t.Log(urlInst)
18+
opr, err := redis.ParseURL(urlInst)
19+
assert.NoError(t, err)
20+
t.Log(opr.Addr)
21+
t.Log(opr.Username)
22+
t.Log(opr.Password)
23+
t.Log(opr.DB)
24+
t.Log(opr.TLSConfig)
25+
}

pkg/scheduling/plugins/scorer/kvcache-aware.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"context"
55
"fmt"
66
"os"
7+
"strings"
8+
9+
"github.com/redis/go-redis/v9"
710

811
kvcache "github.com/llm-d/llm-d-kv-cache-manager/pkg/kv-cache"
912

@@ -37,7 +40,16 @@ func NewKVCacheAwareScorer(ctx context.Context) (plugins.Scorer, error) {
3740

3841
redisAddr := os.Getenv(kvCacheRedisEnvVar)
3942
if redisAddr != "" {
40-
config.KVBlockIndexerConfig.RedisAddr = redisAddr
43+
// to keep compatibility with deployments only specifying hostname:port: need to add protocol to front to enable parsing
44+
if !strings.HasPrefix(redisAddr, "redis://") && !strings.HasPrefix(redisAddr, "rediss://") && !strings.HasPrefix(redisAddr, "unix://") {
45+
redisAddr = "redis://" + redisAddr
46+
}
47+
redisOpt, err := redis.ParseURL(redisAddr)
48+
if err != nil {
49+
return nil, fmt.Errorf("failed to parse redisURL: %w", err)
50+
}
51+
52+
config.KVBlockIndexerConfig.RedisOpt = redisOpt
4153
} else {
4254
return nil, fmt.Errorf("environment variable %s is not set", kvCacheRedisEnvVar)
4355
}

0 commit comments

Comments
 (0)