From c99ac140e4d71a8ac7dc4a263519ea8ee5e18eae Mon Sep 17 00:00:00 2001 From: chienguo <2778180460@qq.com> Date: Fri, 31 May 2024 10:13:31 +0800 Subject: [PATCH 1/5] add codis proxy info command --- codis/pkg/proxy/session.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/codis/pkg/proxy/session.go b/codis/pkg/proxy/session.go index 26137d2182..204f3f99d6 100644 --- a/codis/pkg/proxy/session.go +++ b/codis/pkg/proxy/session.go @@ -14,6 +14,7 @@ import ( "pika/codis/v2/pkg/models" "pika/codis/v2/pkg/proxy/redis" + "pika/codis/v2/pkg/utils" "pika/codis/v2/pkg/utils/errors" "pika/codis/v2/pkg/utils/log" "pika/codis/v2/pkg/utils/sync2/atomic2" @@ -299,6 +300,8 @@ func (s *Session) handleRequest(r *Request, d *Router) error { return s.handleQuit(r) case "AUTH": return s.handleAuth(r) + case "CODIS.INFO": + return s.handleCodisInfo(r) } if !s.authorized { @@ -361,6 +364,22 @@ func (s *Session) handleAuth(r *Request) error { return nil } +func (s *Session) handleCodisInfo(r *Request) error { + if len(r.Multi) != 0 { + r.Resp = redis.NewErrorf("ERR wrong number of arguments for 'CODIS.INFO' command") + return nil + } + + var array = make([]*redis.Resp, 4) + array[0] = redis.NewString([]byte(utils.Version)) + array[1] = redis.NewString([]byte(utils.Compile)) + array[2] = redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr))) + array[3] = redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime))) + r.Resp = redis.NewArray(array) + + return nil +} + func (s *Session) handleSelect(r *Request) error { if len(r.Multi) != 2 { r.Resp = redis.NewErrorf("ERR wrong number of arguments for 'SELECT' command") From eab5f3afb454e0810216b13c22e0015b9031a4b5 Mon Sep 17 00:00:00 2001 From: chienguo <2778180460@qq.com> Date: Fri, 31 May 2024 21:54:02 +0800 Subject: [PATCH 2/5] safe init for slice --- codis/pkg/proxy/session.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codis/pkg/proxy/session.go b/codis/pkg/proxy/session.go index 204f3f99d6..12c005f962 100644 --- a/codis/pkg/proxy/session.go +++ b/codis/pkg/proxy/session.go @@ -370,7 +370,7 @@ func (s *Session) handleCodisInfo(r *Request) error { return nil } - var array = make([]*redis.Resp, 4) + var array = make([]*redis.Resp, 0, 4) array[0] = redis.NewString([]byte(utils.Version)) array[1] = redis.NewString([]byte(utils.Compile)) array[2] = redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr))) From 2669ac5359957a4ff8b109274e4fa73017c21b40 Mon Sep 17 00:00:00 2001 From: chienguo <2778180460@qq.com> Date: Fri, 31 May 2024 23:53:24 +0800 Subject: [PATCH 3/5] use append --- codis/pkg/proxy/session.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/codis/pkg/proxy/session.go b/codis/pkg/proxy/session.go index 12c005f962..6c0286cf1b 100644 --- a/codis/pkg/proxy/session.go +++ b/codis/pkg/proxy/session.go @@ -371,10 +371,10 @@ func (s *Session) handleCodisInfo(r *Request) error { } var array = make([]*redis.Resp, 0, 4) - array[0] = redis.NewString([]byte(utils.Version)) - array[1] = redis.NewString([]byte(utils.Compile)) - array[2] = redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr))) - array[3] = redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime))) + array = append(array, redis.NewString([]byte(utils.Version))) + array = append(array, redis.NewString([]byte(utils.Compile))) + array = append(array, redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr)))) + array = append(array, redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime)))) r.Resp = redis.NewArray(array) return nil From ad82adbec868f75934b98e91238d38c209020d75 Mon Sep 17 00:00:00 2001 From: chienguo <2778180460@qq.com> Date: Fri, 31 May 2024 23:55:50 +0800 Subject: [PATCH 4/5] init in-place --- codis/pkg/proxy/session.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/codis/pkg/proxy/session.go b/codis/pkg/proxy/session.go index 6c0286cf1b..e85ffce47f 100644 --- a/codis/pkg/proxy/session.go +++ b/codis/pkg/proxy/session.go @@ -370,11 +370,12 @@ func (s *Session) handleCodisInfo(r *Request) error { return nil } - var array = make([]*redis.Resp, 0, 4) - array = append(array, redis.NewString([]byte(utils.Version))) - array = append(array, redis.NewString([]byte(utils.Compile))) - array = append(array, redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr)))) - array = append(array, redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime)))) + array := []*redis.Resp{ + redis.NewString([]byte(utils.Version)), + redis.NewString([]byte(utils.Compile)), + redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr))), + redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime))), + } r.Resp = redis.NewArray(array) return nil From b3af51c1d76054a31eaf9f32f7e5ff1970ebe978 Mon Sep 17 00:00:00 2001 From: chienguo <2778180460@qq.com> Date: Sat, 1 Jun 2024 08:55:27 +0800 Subject: [PATCH 5/5] remove assign --- codis/pkg/proxy/session.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/codis/pkg/proxy/session.go b/codis/pkg/proxy/session.go index e85ffce47f..0cd2ac868c 100644 --- a/codis/pkg/proxy/session.go +++ b/codis/pkg/proxy/session.go @@ -370,13 +370,12 @@ func (s *Session) handleCodisInfo(r *Request) error { return nil } - array := []*redis.Resp{ + r.Resp = redis.NewArray([]*redis.Resp{ redis.NewString([]byte(utils.Version)), redis.NewString([]byte(utils.Compile)), redis.NewString([]byte(fmt.Sprintf("admin addr: %s", s.proxy.model.AdminAddr))), redis.NewString([]byte(fmt.Sprintf("start time: %s", s.proxy.model.StartTime))), - } - r.Resp = redis.NewArray(array) + }) return nil }