Cache: Refactor cache clients to use byte array (#62930)

Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
Carl Bergquist
2023-02-08 10:30:20 +01:00
committed by GitHub
parent 2804acd264
commit b88206d98f
7 changed files with 56 additions and 32 deletions
+20 -13
View File
@@ -1,7 +1,9 @@
package rendering
import (
"bytes"
"context"
"encoding/gob"
"fmt"
"time"
@@ -13,33 +15,38 @@ import (
const renderKeyPrefix = "render-%s"
type RenderUser struct {
OrgID int64
UserID int64
OrgRole string
OrgID int64 `json:"org_id"`
UserID int64 `json:"user_id"`
OrgRole string `json:"org_role"`
}
func (rs *RenderingService) GetRenderUser(ctx context.Context, key string) (*RenderUser, bool) {
val, err := rs.RemoteCacheService.Get(ctx, fmt.Sprintf(renderKeyPrefix, key))
val, err := rs.RemoteCacheService.GetByteArray(ctx, fmt.Sprintf(renderKeyPrefix, key))
if err != nil {
rs.log.Error("Failed to get render key from cache", "error", err)
}
if val != nil {
if user, ok := val.(*RenderUser); ok {
return user, true
}
ru := &RenderUser{}
buf := bytes.NewBuffer(val)
err = gob.NewDecoder(buf).Decode(&ru)
if err != nil {
return nil, false
}
return nil, false
return ru, true
}
func setRenderKey(cache *remotecache.RemoteCache, ctx context.Context, opts AuthOpts, renderKey string, expiry time.Duration) error {
err := cache.Set(ctx, fmt.Sprintf(renderKeyPrefix, renderKey), &RenderUser{
buf := bytes.NewBuffer(nil)
err := gob.NewEncoder(buf).Encode(&RenderUser{
OrgID: opts.OrgID,
UserID: opts.UserID,
OrgRole: string(opts.OrgRole),
}, expiry)
return err
})
if err != nil {
return err
}
return cache.SetByteArray(ctx, fmt.Sprintf(renderKeyPrefix, renderKey), buf.Bytes(), expiry)
}
func generateAndSetRenderKey(cache *remotecache.RemoteCache, ctx context.Context, opts AuthOpts, expiry time.Duration) (string, error) {
+4 -4
View File
@@ -2,6 +2,7 @@ package rendering
import (
"context"
"encoding/gob"
"errors"
"fmt"
"math"
@@ -22,10 +23,6 @@ import (
"github.com/grafana/grafana/pkg/util"
)
func init() {
remotecache.Register(&RenderUser{})
}
var _ Service = (*RenderingService)(nil)
const ServiceName = "RenderingService"
@@ -113,6 +110,9 @@ func ProvideService(cfg *setting.Cfg, remoteCache *remotecache.RemoteCache, rm p
domain: domain,
sanitizeURL: sanitizeURL,
}
gob.Register(&RenderUser{})
return s, nil
}