Skip to content

Commit 21eb7a3

Browse files
authored
make cache stats metrics work again (#107)
* fix: make cache stats metrics work again * fix: lint issues * update docs
1 parent 4b5d400 commit 21eb7a3

File tree

9 files changed

+223
-222
lines changed

9 files changed

+223
-222
lines changed

pkg/zcache/combined_cache.go

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ package zcache
22

33
import (
44
"context"
5-
"fmt"
65
"github.com/allegro/bigcache/v3"
76
"github.com/go-redis/redis/v8"
7+
"github.com/zondax/golem/pkg/logger"
88
"github.com/zondax/golem/pkg/metrics"
9-
"go.uber.org/zap"
109
"time"
1110
)
1211

@@ -17,78 +16,77 @@ type CombinedCache interface {
1716
type combinedCache struct {
1817
localCache LocalCache
1918
remoteCache RemoteCache
20-
logger *zap.Logger
19+
logger *logger.Logger
2120
isRemoteBestEffort bool
2221
metricsServer metrics.TaskMetrics
23-
appName string
2422
}
2523

2624
func (c *combinedCache) Set(ctx context.Context, key string, value interface{}, ttl time.Duration) error {
27-
c.logger.Sugar().Debugf("set key on combined cache, key: [%s]", key)
25+
c.logger.Debugf("set key on combined cache, key: [%s]", key)
2826

2927
if err := c.remoteCache.Set(ctx, key, value, ttl); err != nil {
30-
c.logger.Sugar().Errorf("error setting key on combined/remote cache, key: [%s], err: %s", key, err)
28+
c.logger.Errorf("error setting key on combined/remote cache, key: [%s], err: %s", key, err)
3129
if !c.isRemoteBestEffort {
32-
c.logger.Sugar().Debugf("emitting error as remote best effort is false, key: [%s]", key)
30+
c.logger.Debugf("emitting error as remote best effort is false, key: [%s]", key)
3331
return err
3432
}
3533
}
3634

3735
if err := c.localCache.Set(ctx, key, value, ttl); err != nil {
38-
c.logger.Sugar().Errorf("error setting key on combined/local cache, key: [%s], err: %s", key, err)
36+
c.logger.Errorf("error setting key on combined/local cache, key: [%s], err: %s", key, err)
3937
return err
4038
}
4139
return nil
4240
}
4341

4442
func (c *combinedCache) Get(ctx context.Context, key string, data interface{}) error {
45-
c.logger.Sugar().Debugf("get key on combined cache, key: [%s]", key)
43+
c.logger.Debugf("get key on combined cache, key: [%s]", key)
4644

4745
err := c.localCache.Get(ctx, key, data)
4846
if err != nil {
4947
if c.localCache.IsNotFoundError(err) {
50-
c.logger.Sugar().Debugf("key not found on combined/local cache, key: [%s]", key)
48+
c.logger.Debugf("key not found on combined/local cache, key: [%s]", key)
5149
} else {
52-
c.logger.Sugar().Debugf("error getting key on combined/local cache, key: [%s], err: %s", key, err)
50+
c.logger.Debugf("error getting key on combined/local cache, key: [%s], err: %s", key, err)
5351
}
5452

5553
if err := c.remoteCache.Get(ctx, key, data); err != nil {
5654
if c.remoteCache.IsNotFoundError(err) {
57-
c.logger.Sugar().Debugf("key not found on combined/remote cache, key: [%s]", key)
55+
c.logger.Debugf("key not found on combined/remote cache, key: [%s]", key)
5856
} else {
59-
c.logger.Sugar().Debugf("error getting key on combined/remote cache, key: [%s], err: %s", key, err)
57+
c.logger.Debugf("error getting key on combined/remote cache, key: [%s], err: %s", key, err)
6058
}
6159

6260
return err
6361
}
6462

65-
c.logger.Sugar().Debugf("set value found on remote cache in the local cache, key: [%s]", key)
63+
c.logger.Debugf("set value found on remote cache in the local cache, key: [%s]", key)
6664
ttl, ttlErr := c.remoteCache.TTL(ctx, key)
6765

6866
// Refresh data TTL on both caches
6967
if ttlErr == nil {
7068
_ = c.localCache.Set(ctx, key, data, ttl)
7169
} else {
72-
c.logger.Sugar().Errorf("error getting TTL for key [%s] from remote cache, err: %s", key, ttlErr)
70+
c.logger.Errorf("error getting TTL for key [%s] from remote cache, err: %s", key, ttlErr)
7371
}
7472
}
7573

7674
return nil
7775
}
7876

7977
func (c *combinedCache) Delete(ctx context.Context, key string) error {
80-
c.logger.Sugar().Debugf("delete key on combined cache, key: [%s]", key)
78+
c.logger.Debugf("delete key on combined cache, key: [%s]", key)
8179
err2 := c.remoteCache.Delete(ctx, key)
8280
if err2 != nil {
83-
c.logger.Sugar().Errorf("error deleting key on combined/remote cache, key: [%s], err: %s", key, err2)
81+
c.logger.Errorf("error deleting key on combined/remote cache, key: [%s], err: %s", key, err2)
8482
if !c.isRemoteBestEffort {
85-
c.logger.Sugar().Debugf("emitting error as remote best effort is false, key: [%s]")
83+
c.logger.Debugf("emitting error as remote best effort is false, key: [%s]")
8684
return err2
8785
}
8886
}
8987

9088
if err1 := c.localCache.Delete(ctx, key); err1 != nil {
91-
c.logger.Sugar().Errorf("error deleting key on combined/local cache, key: [%s], err: %s", key, err1)
89+
c.logger.Errorf("error deleting key on combined/local cache, key: [%s], err: %s", key, err1)
9290
return err1
9391
}
9492

@@ -110,20 +108,6 @@ func (c *combinedCache) IsNotFoundError(err error) bool {
110108
return c.remoteCache.IsNotFoundError(err) || c.localCache.IsNotFoundError(err)
111109
}
112110

113-
func (c *combinedCache) SetupAndMonitorMetrics(appName string, metricsServer metrics.TaskMetrics, updateInterval time.Duration) []error {
114-
c.metricsServer = metricsServer
115-
c.appName = appName
116-
117-
errs := setupAndMonitorCacheMetrics(appName, metricsServer, c, updateInterval)
118-
errs = append(errs, c.registerInternalCacheMetrics()...)
119-
120-
return errs
121-
}
122-
123-
func (c *combinedCache) registerInternalCacheMetrics() []error {
124-
if c.metricsServer == nil {
125-
return []error{fmt.Errorf("metrics server not available")}
126-
}
127-
128-
return []error{}
111+
func (c *combinedCache) setupAndMonitorMetrics(updateInterval time.Duration) {
112+
setupAndMonitorCacheMetrics(c.metricsServer, c, c.logger, updateInterval)
129113
}

pkg/zcache/combined_cache_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package zcache
33
import (
44
"context"
55
"github.com/stretchr/testify/suite"
6+
logger2 "github.com/zondax/golem/pkg/logger"
67
"github.com/zondax/golem/pkg/metrics"
7-
"go.uber.org/zap"
88
"os"
99
"testing"
1010
"time"
@@ -31,8 +31,7 @@ func (suite *CombinedCacheTestSuite) SetupSuite() {
3131
suite.Require().NoError(err)
3232
suite.mr = mr
3333
suite.ms = metrics.NewTaskMetrics("", "", "appname")
34-
logger, err := zap.NewDevelopment()
35-
suite.Require().NoError(err)
34+
logger := logger2.NewLogger()
3635

3736
prefix := os.Getenv("PREFIX")
3837
suite.cacheRemoteBrokenBestEffort, err = NewCombinedCache(

pkg/zcache/config.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,22 @@ package zcache
33
import (
44
"github.com/allegro/bigcache/v3"
55
"github.com/go-redis/redis/v8"
6+
"github.com/zondax/golem/pkg/logger"
67
"github.com/zondax/golem/pkg/metrics"
7-
"go.uber.org/zap"
88
"time"
99
)
1010

11+
type StatsMetrics struct {
12+
Enable bool
13+
UpdateInterval time.Duration
14+
}
15+
16+
type CleanupProcess struct {
17+
Interval time.Duration
18+
BatchSize int
19+
ThrottleTime time.Duration
20+
}
21+
1122
type RemoteConfig struct {
1223
Network string
1324
Addr string
@@ -23,16 +34,16 @@ type RemoteConfig struct {
2334
IdleTimeout time.Duration
2435
IdleCheckFrequency time.Duration
2536
Prefix string
26-
Logger *zap.Logger
37+
Logger *logger.Logger
38+
StatsMetrics StatsMetrics
2739
}
2840

2941
type LocalConfig struct {
30-
Prefix string
31-
Logger *zap.Logger
32-
MetricServer metrics.TaskMetrics
33-
CleanupInterval time.Duration
34-
BatchSize int
35-
ThrottleTime time.Duration
42+
Prefix string
43+
Logger *logger.Logger
44+
MetricServer metrics.TaskMetrics
45+
StatsMetrics StatsMetrics
46+
CleanupProcess CleanupProcess
3647
}
3748

3849
func (c *RemoteConfig) ToRedisConfig() *redis.Options {
@@ -61,7 +72,8 @@ func (c *LocalConfig) ToBigCacheConfig() bigcache.Config {
6172
type CombinedConfig struct {
6273
Local *LocalConfig
6374
Remote *RemoteConfig
64-
GlobalLogger *zap.Logger
75+
GlobalLogger *logger.Logger
6576
GlobalPrefix string
77+
GlobalStatsMetrics StatsMetrics
6678
IsRemoteBestEffort bool
6779
}

0 commit comments

Comments
 (0)