@@ -55,25 +55,36 @@ var tracerInitialized = false
55
55
56
56
// MakeListener initializes a new trace lambda Listener
57
57
func MakeListener (config Config , extensionManager * extension.ExtensionManager ) Listener {
58
+ fmt .Printf ("MakeListener()" )
58
59
if config .TracerOptions == nil {
59
60
config .TracerOptions = []tracer.StartOption {}
60
61
}
61
62
62
- // Read DD_TRACE_SAMPLING_RULES before initializing tracer
63
+ // Read DD_TRACE_SAMPLING_RULES first
64
+ fmt .Printf ("Trying to get sampling rules env var" )
65
+ var samplingRules []tracer.SamplingRule
63
66
if ruleStr := os .Getenv ("DD_TRACE_SAMPLING_RULES" ); ruleStr != "" {
67
+ fmt .Printf ("Env: %s" , ruleStr )
64
68
var rules []map [string ]interface {}
65
69
if err := json .Unmarshal ([]byte (ruleStr ), & rules ); err == nil {
66
- // Convert environment rules to tracer.SamplingRule
67
70
for _ , rule := range rules {
71
+ fmt .Printf ("Rule: %s" , rule )
68
72
if rate , ok := rule ["sample_rate" ].(float64 ); ok {
69
- samplingRule := tracer .RateRule (rate )
70
- config .TracerOptions = append (config .TracerOptions ,
71
- tracer .WithSamplingRules ([]tracer.SamplingRule {samplingRule }))
73
+ fmt .Printf ("Appending sampling rule" )
74
+ samplingRules = append (samplingRules , tracer .RateRule (rate ))
72
75
}
73
76
}
74
77
}
75
78
}
76
79
80
+ // If we have sampling rules from environment, add them first
81
+ if len (samplingRules ) > 0 {
82
+ fmt .Printf ("Sample rule found, adding." )
83
+ config .TracerOptions = append ([]tracer.StartOption {
84
+ tracer .WithSamplingRules (samplingRules ),
85
+ }, config .TracerOptions ... )
86
+ }
87
+
77
88
return Listener {
78
89
ddTraceEnabled : config .DDTraceEnabled ,
79
90
mergeXrayTraces : config .MergeXrayTraces ,
0 commit comments