From e451d3040a12f83ac1dc0feac3de2990bcee81f7 Mon Sep 17 00:00:00 2001 From: Mada Date: Fri, 25 Apr 2025 18:25:40 +0800 Subject: [PATCH 1/3] Fix redis panic on handle empty category --- storage/cache/redis.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/storage/cache/redis.go b/storage/cache/redis.go index 68265b7e2..546fb8b18 100644 --- a/storage/cache/redis.go +++ b/storage/cache/redis.go @@ -475,6 +475,9 @@ func decodeCategory(s string) (string, error) { if err != nil { return "", errors.Trace(err) } + if len(b) == 0 { + return "", nil + } return string(b[1:]), nil } @@ -496,7 +499,9 @@ func decodeCategories(s string) ([]string, error) { if err != nil { return nil, errors.Trace(err) } - categories = append(categories, category) + if len(category) > 0 { + categories = append(categories, category) + } } return categories, nil } From 95685683ab602b0eae73348bb1ba7721a8824196 Mon Sep 17 00:00:00 2001 From: Mada Date: Fri, 25 Apr 2025 19:08:34 +0800 Subject: [PATCH 2/3] Fix empty feedback record panic --- server/rest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/rest.go b/server/rest.go index 83a631ea5..f682c0011 100644 --- a/server/rest.go +++ b/server/rest.go @@ -1872,7 +1872,7 @@ func (s *RestServer) getTypedUserItemFeedback(request *restful.Request, response itemId := request.PathParameter("item-id") if feedback, err := s.DataClient.GetUserItemFeedback(ctx, userId, itemId, feedbackType); err != nil { InternalServerError(response, err) - } else if feedbackType == "" { + } else if feedbackType == "" || len(feedback) == 0 { Text(response, "{}") } else { Ok(response, feedback[0]) From ab69c99b495896654580f07e32b2e72880633a79 Mon Sep 17 00:00:00 2001 From: Mada Date: Wed, 30 Apr 2025 17:41:35 +0800 Subject: [PATCH 3/3] Empty category(default item category value) is also valid --- storage/cache/redis.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/storage/cache/redis.go b/storage/cache/redis.go index 546fb8b18..888baf3bb 100644 --- a/storage/cache/redis.go +++ b/storage/cache/redis.go @@ -499,9 +499,8 @@ func decodeCategories(s string) ([]string, error) { if err != nil { return nil, errors.Trace(err) } - if len(category) > 0 { - categories = append(categories, category) - } + // category = "" is also a valid category + categories = append(categories, category) } return categories, nil }