mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-04 17:29:16 +02:00
log context (#2107)
This commit is contained in:
parent
e7995954ff
commit
e0c09a0998
87 changed files with 714 additions and 524 deletions
|
@ -15,7 +15,7 @@ type logger struct {
|
|||
}
|
||||
|
||||
func (l logger) Printf(ctx context.Context, format string, v ...interface{}) {
|
||||
log.Info().Str("service", "redis").Msgf(format, v...)
|
||||
log.Info(ctx).Str("service", "redis").Msgf(format, v...)
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
|
@ -51,6 +51,7 @@ type Backend struct {
|
|||
|
||||
// New creates a new redis storage backend.
|
||||
func New(rawURL string, options ...Option) (*Backend, error) {
|
||||
ctx := context.TODO()
|
||||
cfg := getConfig(options...)
|
||||
backend := &Backend{
|
||||
cfg: cfg,
|
||||
|
@ -63,7 +64,7 @@ func New(rawURL string, options ...Option) (*Backend, error) {
|
|||
return nil, err
|
||||
}
|
||||
metrics.AddRedisMetrics(backend.client.PoolStats)
|
||||
go backend.listenForVersionChanges()
|
||||
go backend.listenForVersionChanges(ctx)
|
||||
if cfg.expiry != 0 {
|
||||
go func() {
|
||||
ticker := time.NewTicker(time.Minute)
|
||||
|
@ -75,7 +76,7 @@ func New(rawURL string, options ...Option) (*Backend, error) {
|
|||
case <-ticker.C:
|
||||
}
|
||||
|
||||
backend.removeChangesBefore(time.Now().Add(-cfg.expiry))
|
||||
backend.removeChangesBefore(ctx, time.Now().Add(-cfg.expiry))
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
@ -146,7 +147,7 @@ func (backend *Backend) GetAll(ctx context.Context) (records []*databroker.Recor
|
|||
var record databroker.Record
|
||||
err := proto.Unmarshal([]byte(result), &record)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("redis: invalid record detected")
|
||||
log.Warn(ctx).Err(err).Msg("redis: invalid record detected")
|
||||
continue
|
||||
}
|
||||
records = append(records, &record)
|
||||
|
@ -246,8 +247,8 @@ func (backend *Backend) incrementVersion(ctx context.Context,
|
|||
return ErrExceededMaxRetries
|
||||
}
|
||||
|
||||
func (backend *Backend) listenForVersionChanges() {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
func (backend *Backend) listenForVersionChanges(ctx context.Context) {
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
go func() {
|
||||
<-backend.closed
|
||||
cancel()
|
||||
|
@ -274,14 +275,13 @@ outer:
|
|||
|
||||
switch msg.(type) {
|
||||
case *redis.Message:
|
||||
backend.onChange.Broadcast()
|
||||
backend.onChange.Broadcast(ctx)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (backend *Backend) removeChangesBefore(cutoff time.Time) {
|
||||
ctx := context.Background()
|
||||
func (backend *Backend) removeChangesBefore(ctx context.Context, cutoff time.Time) {
|
||||
for {
|
||||
cmd := backend.client.ZRangeByScore(ctx, changesSetKey, &redis.ZRangeBy{
|
||||
Min: "-inf",
|
||||
|
@ -291,7 +291,7 @@ func (backend *Backend) removeChangesBefore(cutoff time.Time) {
|
|||
})
|
||||
results, err := cmd.Result()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("redis: error retrieving changes for expiration")
|
||||
log.Error(ctx).Err(err).Msg("redis: error retrieving changes for expiration")
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -303,7 +303,7 @@ func (backend *Backend) removeChangesBefore(cutoff time.Time) {
|
|||
var record databroker.Record
|
||||
err = proto.Unmarshal([]byte(results[0]), &record)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("redis: invalid record detected")
|
||||
log.Warn(ctx).Err(err).Msg("redis: invalid record detected")
|
||||
record.ModifiedAt = timestamppb.New(cutoff.Add(-time.Second)) // set the modified so will delete it
|
||||
}
|
||||
|
||||
|
@ -315,7 +315,7 @@ func (backend *Backend) removeChangesBefore(cutoff time.Time) {
|
|||
// remove the record
|
||||
err = backend.client.ZRem(ctx, changesSetKey, results[0]).Err()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("redis: error removing member")
|
||||
log.Error(ctx).Err(err).Msg("redis: error removing member")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,7 +181,7 @@ func TestExpiry(t *testing.T) {
|
|||
_ = stream.Close()
|
||||
require.Len(t, records, 1000)
|
||||
|
||||
backend.removeChangesBefore(time.Now().Add(time.Second))
|
||||
backend.removeChangesBefore(ctx, time.Now().Add(time.Second))
|
||||
|
||||
stream, err = backend.Sync(ctx, 0)
|
||||
require.NoError(t, err)
|
||||
|
|
|
@ -17,7 +17,7 @@ type recordStream struct {
|
|||
ctx context.Context
|
||||
backend *Backend
|
||||
|
||||
changed chan struct{}
|
||||
changed chan context.Context
|
||||
version uint64
|
||||
record *databroker.Record
|
||||
err error
|
||||
|
@ -63,6 +63,7 @@ func (stream *recordStream) Next(block bool) bool {
|
|||
ticker := time.NewTicker(watchPollInterval)
|
||||
defer ticker.Stop()
|
||||
|
||||
changeCtx := context.Background()
|
||||
for {
|
||||
cmd := stream.backend.client.ZRangeByScore(stream.ctx, changesSetKey, &redis.ZRangeBy{
|
||||
Min: fmt.Sprintf("(%d", stream.version),
|
||||
|
@ -81,7 +82,7 @@ func (stream *recordStream) Next(block bool) bool {
|
|||
var record databroker.Record
|
||||
err = proto.Unmarshal([]byte(result), &record)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("redis: invalid record detected")
|
||||
log.Warn(changeCtx).Err(err).Msg("redis: invalid record detected")
|
||||
} else {
|
||||
stream.record = &record
|
||||
}
|
||||
|
@ -97,7 +98,7 @@ func (stream *recordStream) Next(block bool) bool {
|
|||
case <-stream.closed:
|
||||
return false
|
||||
case <-ticker.C: // check again
|
||||
case <-stream.changed: // check again
|
||||
case changeCtx = <-stream.changed: // check again
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue