Compare commits
	
		
			3 Commits
		
	
	
		
			v0.17.0
			...
			f2fd297218
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f2fd297218 | |||
| ac000112c3 | |||
| 21a4165489 | 
@@ -121,6 +121,10 @@
 | 
			
		||||
          "default": "127.0.0.1",
 | 
			
		||||
          "type": "string"
 | 
			
		||||
        },
 | 
			
		||||
        "redisKeyTTL": {
 | 
			
		||||
          "default": "24h",
 | 
			
		||||
          "type": "string"
 | 
			
		||||
        },
 | 
			
		||||
        "redisPassword": {
 | 
			
		||||
          "type": "string"
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
@@ -15,13 +15,13 @@ type: application
 | 
			
		||||
# This is the chart version. This version number should be incremented each time you make changes
 | 
			
		||||
# to the chart and its templates, including the app version.
 | 
			
		||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
 | 
			
		||||
version: 0.1.10
 | 
			
		||||
version: 0.1.11
 | 
			
		||||
 | 
			
		||||
# This is the version number of the application being deployed. This version number should be
 | 
			
		||||
# incremented each time you make changes to the application. Versions are not expected to
 | 
			
		||||
# follow Semantic Versioning. They should reflect the version the application is using.
 | 
			
		||||
# It is recommended to use it with quotes.
 | 
			
		||||
appVersion: "v0.15.6"
 | 
			
		||||
appVersion: "v0.18.0"
 | 
			
		||||
 | 
			
		||||
dependencies:
 | 
			
		||||
  - name: hull
 | 
			
		||||
 
 | 
			
		||||
@@ -22,4 +22,5 @@ type RedisConfig struct {
 | 
			
		||||
	RedisDB          int    `yaml:"redisDB" env:"REDIS_DB" default:"0" json:"redisDB,omitempty"`
 | 
			
		||||
	RedisTLS         bool   `yaml:"redisTLS" env:"REDIS_TLS" default:"false" json:"redisTLS,omitempty"`
 | 
			
		||||
	RedisTLSInsecure bool   `yaml:"redisTLSInsecure" env:"REDIS_TLS_INSECURE" default:"false" json:"redisTLSInsecure,omitempty"`
 | 
			
		||||
	RedisKeyTTL      string `yaml:"redisKeyTTL" env:"REDIS_KEY_TTL" default:"24h" json:"redisKeyTTL,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"crypto/tls"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
 | 
			
		||||
	"go.opentelemetry.io/otel/attribute"
 | 
			
		||||
@@ -20,6 +21,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	DEF_TTL     = "24h"
 | 
			
		||||
	DEF_RETAIN  = 120
 | 
			
		||||
	UPDATES_KEY = "weatherUpdates"
 | 
			
		||||
	NAME        = "redis recorder"
 | 
			
		||||
@@ -27,6 +29,7 @@ const (
 | 
			
		||||
 | 
			
		||||
type RedisRecorder struct {
 | 
			
		||||
	baseCtx context.Context
 | 
			
		||||
	keyTTL  time.Duration
 | 
			
		||||
	tracer  trace.Tracer
 | 
			
		||||
	redis   *redis.Client
 | 
			
		||||
	config  *config.AmbientLocalExporterConfig
 | 
			
		||||
@@ -42,8 +45,11 @@ func (r *RedisRecorder) Ping(ctx context.Context) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *RedisRecorder) Init(ctx context.Context, opts *recorders.RecorderOpts) {
 | 
			
		||||
	r.baseCtx = opts.BaseCtx
 | 
			
		||||
	r.log = zerolog.Ctx(r.baseCtx)
 | 
			
		||||
 | 
			
		||||
	if opts.AppConfig.RecorderConfig.RedisConfig == nil {
 | 
			
		||||
		panic("refusing to init redis recorder with no redisConfig")
 | 
			
		||||
		r.log.Panic().Msg("refusing to init redis recorder with no redisConfig")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if opts.RetainLast < 1 {
 | 
			
		||||
@@ -53,8 +59,18 @@ func (r *RedisRecorder) Init(ctx context.Context, opts *recorders.RecorderOpts)
 | 
			
		||||
	r.config = opts.AppConfig
 | 
			
		||||
	r.keep = opts.RetainLast
 | 
			
		||||
	r.RWMutex = &sync.RWMutex{}
 | 
			
		||||
	r.baseCtx = opts.BaseCtx
 | 
			
		||||
	r.log = zerolog.Ctx(r.baseCtx)
 | 
			
		||||
 | 
			
		||||
	keyTTL := opts.AppConfig.RecorderConfig.RedisConfig.RedisKeyTTL
 | 
			
		||||
	if keyTTL == "" {
 | 
			
		||||
		keyTTL = DEF_TTL
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
	r.keyTTL, err = time.ParseDuration(keyTTL)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		r.log.Panic().Str("redisKeyTTL", keyTTL).Err(err).
 | 
			
		||||
			Msg("invalid redis key ttl provided")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	r.tracer = otel.GetTracer(r.baseCtx, "redisRecorder")
 | 
			
		||||
	ctx, span := r.tracer.Start(ctx, "redisRecorder.init", trace.WithAttributes(
 | 
			
		||||
@@ -62,6 +78,7 @@ func (r *RedisRecorder) Init(ctx context.Context, opts *recorders.RecorderOpts)
 | 
			
		||||
		attribute.Int("retainLast", opts.RetainLast),
 | 
			
		||||
		attribute.Int("redisPort", opts.AppConfig.RecorderConfig.RedisConfig.RedisPort),
 | 
			
		||||
		attribute.Bool("tls", opts.AppConfig.RecorderConfig.RedisConfig.RedisTLS),
 | 
			
		||||
		attribute.String("keyTTL", r.keyTTL.String()),
 | 
			
		||||
	))
 | 
			
		||||
	defer span.End()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ func (r *RedisRecorder) set(ctx context.Context, data []byte) error {
 | 
			
		||||
		pipe.LPush(ctx, r.Key(), data)
 | 
			
		||||
		pipe.LTrim(ctx, r.Key(), 0, int64(r.keep)-1)
 | 
			
		||||
		count = pipe.LLen(ctx, r.Key())
 | 
			
		||||
		pipe.Expire(ctx, r.Key(), r.keyTTL)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user