diff --git a/pkg/services/anonymous/anonimpl/impl.go b/pkg/services/anonymous/anonimpl/impl.go index 0006b5d5db7..3c40f38d4d8 100644 --- a/pkg/services/anonymous/anonimpl/impl.go +++ b/pkg/services/anonymous/anonimpl/impl.go @@ -9,6 +9,7 @@ import ( "strings" "time" + "github.com/grafana/grafana/pkg/infra/localcache" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/network" "github.com/grafana/grafana/pkg/infra/remotecache" @@ -40,12 +41,14 @@ func (a *AnonSession) Key() (string, error) { type AnonSessionService struct { remoteCache remotecache.CacheStorage log log.Logger + localCache *localcache.CacheService } func ProvideAnonymousSessionService(remoteCache remotecache.CacheStorage, usageStats usagestats.Service) *AnonSessionService { a := &AnonSessionService{ remoteCache: remoteCache, log: log.New("anonymous-session-service"), + localCache: localcache.New(29*time.Minute, 15*time.Minute), } usageStats.RegisterMetricsFunc(a.UsageStatFn) @@ -87,5 +90,11 @@ func (a *AnonSessionService) TagSession(ctx context.Context, httpReq *http.Reque return err } + if _, ok := a.localCache.Get(key); ok { + return nil + } + + a.localCache.SetDefault(key, struct{}{}) + return a.remoteCache.Set(ctx, key, key, thirtyDays) }