mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-28 16:37:24 +02:00
log context (#2107)
This commit is contained in:
parent
e7995954ff
commit
e0c09a0998
87 changed files with 714 additions and 524 deletions
|
@ -35,22 +35,22 @@ type dbConfig struct {
|
|||
}
|
||||
|
||||
// NewConfigSource creates a new ConfigSource.
|
||||
func NewConfigSource(underlying config.Source, listeners ...config.ChangeListener) *ConfigSource {
|
||||
func NewConfigSource(ctx context.Context, underlying config.Source, listeners ...config.ChangeListener) *ConfigSource {
|
||||
src := &ConfigSource{
|
||||
dbConfigs: map[string]dbConfig{},
|
||||
}
|
||||
for _, li := range listeners {
|
||||
src.OnConfigChange(li)
|
||||
src.OnConfigChange(ctx, li)
|
||||
}
|
||||
underlying.OnConfigChange(func(cfg *config.Config) {
|
||||
underlying.OnConfigChange(ctx, func(ctx context.Context, cfg *config.Config) {
|
||||
src.mu.Lock()
|
||||
src.underlyingConfig = cfg.Clone()
|
||||
src.mu.Unlock()
|
||||
|
||||
src.rebuild(false)
|
||||
src.rebuild(ctx, firstTime(false))
|
||||
})
|
||||
src.underlyingConfig = underlying.GetConfig()
|
||||
src.rebuild(true)
|
||||
src.rebuild(ctx, firstTime(true))
|
||||
return src
|
||||
}
|
||||
|
||||
|
@ -62,8 +62,10 @@ func (src *ConfigSource) GetConfig() *config.Config {
|
|||
return src.computedConfig
|
||||
}
|
||||
|
||||
func (src *ConfigSource) rebuild(firstTime bool) {
|
||||
_, span := trace.StartSpan(context.Background(), "databroker.config_source.rebuild")
|
||||
type firstTime bool
|
||||
|
||||
func (src *ConfigSource) rebuild(ctx context.Context, firstTime firstTime) {
|
||||
_, span := trace.StartSpan(ctx, "databroker.config_source.rebuild")
|
||||
defer span.End()
|
||||
|
||||
src.mu.Lock()
|
||||
|
@ -78,7 +80,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
for _, policy := range cfg.Options.GetAllPolicies() {
|
||||
id, err := policy.RouteID()
|
||||
if err != nil {
|
||||
log.Warn().Err(err).
|
||||
log.Warn(ctx).Err(err).
|
||||
Str("policy", policy.String()).
|
||||
Msg("databroker: invalid policy config, ignoring")
|
||||
return
|
||||
|
@ -95,7 +97,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
|
||||
err := cfg.Options.Validate()
|
||||
if err != nil {
|
||||
metrics.SetDBConfigRejected(cfg.Options.Services, id, cfgpb.version, err)
|
||||
metrics.SetDBConfigRejected(ctx, cfg.Options.Services, id, cfgpb.version, err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -103,7 +105,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
policy, err := config.NewPolicyFromProto(routepb)
|
||||
if err != nil {
|
||||
errCount++
|
||||
log.Warn().Err(err).
|
||||
log.Warn(ctx).Err(err).
|
||||
Str("db_config_id", id).
|
||||
Msg("databroker: error converting protobuf into policy")
|
||||
continue
|
||||
|
@ -112,7 +114,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
err = policy.Validate()
|
||||
if err != nil {
|
||||
errCount++
|
||||
log.Warn().Err(err).
|
||||
log.Warn(ctx).Err(err).
|
||||
Str("db_config_id", id).
|
||||
Str("policy", policy.String()).
|
||||
Msg("databroker: invalid policy, ignoring")
|
||||
|
@ -122,7 +124,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
routeID, err := policy.RouteID()
|
||||
if err != nil {
|
||||
errCount++
|
||||
log.Warn().Err(err).
|
||||
log.Warn(ctx).Err(err).
|
||||
Str("db_config_id", id).
|
||||
Str("policy", policy.String()).
|
||||
Msg("databroker: cannot establish policy route ID, ignoring")
|
||||
|
@ -131,7 +133,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
|
||||
if _, ok := seen[routeID]; ok {
|
||||
errCount++
|
||||
log.Warn().Err(err).
|
||||
log.Warn(ctx).Err(err).
|
||||
Str("db_config_id", id).
|
||||
Str("policy", policy.String()).
|
||||
Msg("databroker: duplicate policy detected, ignoring")
|
||||
|
@ -141,7 +143,7 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
|
||||
additionalPolicies = append(additionalPolicies, *policy)
|
||||
}
|
||||
metrics.SetDBConfigInfo(cfg.Options.Services, id, cfgpb.version, int64(errCount))
|
||||
metrics.SetDBConfigInfo(ctx, cfg.Options.Services, id, cfgpb.version, int64(errCount))
|
||||
}
|
||||
|
||||
// add the additional policies here since calling `Validate` will reset them.
|
||||
|
@ -149,10 +151,10 @@ func (src *ConfigSource) rebuild(firstTime bool) {
|
|||
|
||||
src.computedConfig = cfg
|
||||
if !firstTime {
|
||||
src.Trigger(cfg)
|
||||
src.Trigger(ctx, cfg)
|
||||
}
|
||||
|
||||
metrics.SetConfigInfo(cfg.Options.Services, "databroker", cfg.Checksum(), true)
|
||||
metrics.SetConfigInfo(ctx, cfg.Options.Services, "databroker", cfg.Checksum(), true)
|
||||
}
|
||||
|
||||
func (src *ConfigSource) runUpdater(cfg *config.Config) {
|
||||
|
@ -191,7 +193,7 @@ func (src *ConfigSource) runUpdater(cfg *config.Config) {
|
|||
|
||||
cc, err := grpc.NewGRPCClientConn(connectionOptions)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("databroker: failed to create gRPC connection to data broker")
|
||||
log.Error(context.TODO()).Err(err).Msg("databroker: failed to create gRPC connection to data broker")
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -237,7 +239,7 @@ func (s *syncerHandler) UpdateRecords(ctx context.Context, serverVersion uint64,
|
|||
var cfgpb configpb.Config
|
||||
err := record.GetData().UnmarshalTo(&cfgpb)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("databroker: error decoding config")
|
||||
log.Warn(ctx).Err(err).Msg("databroker: error decoding config")
|
||||
delete(s.src.dbConfigs, record.GetId())
|
||||
continue
|
||||
}
|
||||
|
@ -246,5 +248,5 @@ func (s *syncerHandler) UpdateRecords(ctx context.Context, serverVersion uint64,
|
|||
}
|
||||
s.src.mu.Unlock()
|
||||
|
||||
s.src.rebuild(false)
|
||||
s.src.rebuild(ctx, firstTime(false))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue