11package datadog .trace .common .sampling ;
22
3- import datadog .trace .api .cache .DDCache ;
4- import datadog .trace .api .cache .DDCaches ;
5- import datadog .trace .api .sampling .PrioritySampling ;
63import datadog .trace .api .sampling .SamplingMechanism ;
74import datadog .trace .common .writer .RemoteResponseListener ;
85import datadog .trace .core .CoreSpan ;
9- import java .util .HashMap ;
6+ import java .util .Collections ;
107import java .util .Map ;
8+ import java .util .TreeMap ;
9+
1110import java .util .function .Function ;
1211import org .slf4j .Logger ;
1312import org .slf4j .LoggerFactory ;
@@ -71,8 +70,8 @@ public void onResponse(
7170 }
7271
7372 log .debug ("Update service sampler rates: {} -> {}" , endpoint , responseJson );
74- final Map <String , Map <String , RateSampler >> updatedEnvServiceRates =
75- new HashMap <>(newServiceRates . size () * 2 );
73+ final TreeMap <String , TreeMap <String , RateSampler >> updatedEnvServiceRates =
74+ new TreeMap <>(String :: compareToIgnoreCase );
7675
7776 RateSampler fallbackSampler = RateSamplersByEnvAndService .DEFAULT_SAMPLER ;
7877 for (final Map .Entry <String , Number > entry : newServiceRates .entrySet ()) {
@@ -87,7 +86,7 @@ public void onResponse(
8786 } else {
8887 Map <String , RateSampler > serviceRates =
8988 updatedEnvServiceRates .computeIfAbsent (
90- envAndService .lowerEnv , env -> new HashMap <>(newServiceRates . size () * 2 ));
89+ envAndService .lowerEnv , env -> new TreeMap <>(String :: compareToIgnoreCase ));
9190
9291 serviceRates .computeIfAbsent (
9392 envAndService .lowerService ,
@@ -114,38 +113,34 @@ private static RateSampler createRateSampler(final double sampleRate) {
114113 private static final class RateSamplersByEnvAndService {
115114 private static final RateSampler DEFAULT_SAMPLER = createRateSampler (DEFAULT_RATE );
116115
117- private final Map <String , Map <String , RateSampler >> envServiceRates ;
116+ private final Map <String , TreeMap <String , RateSampler >> envServiceRates ;
118117 private final RateSampler fallbackSampler ;
119118
120119 RateSamplersByEnvAndService () {
121- this (new HashMap <>( 0 ), DEFAULT_SAMPLER );
120+ this (Collections . emptyMap ( ), DEFAULT_SAMPLER );
122121 }
123122
124123 RateSamplersByEnvAndService (
125- Map <String , Map <String , RateSampler >> envServiceRates , RateSampler fallbackSampler ) {
124+ Map <String , TreeMap <String , RateSampler >> envServiceRates , RateSampler fallbackSampler ) {
126125 this .envServiceRates = envServiceRates ;
127126 this .fallbackSampler = fallbackSampler ;
128127 }
129128
130129 // used in tests only
131130 RateSampler getSampler (EnvAndService envAndService ) {
132- return getSamplerImpl (envAndService .lowerEnv , envAndService .lowerService );
131+ return getSampler (envAndService .lowerEnv , envAndService .lowerService );
133132 }
134133
135134 public RateSampler getSampler (String env , String service ) {
136- return getSamplerImpl (env .toLowerCase (), service .toLowerCase ());
137- }
138-
139- private RateSampler getSamplerImpl (String lowerEnv , String lowerService ) {
140- if (EnvAndService .isFallback (lowerEnv , lowerService )) {
135+ if (EnvAndService .isFallback (env , service )) {
141136 return fallbackSampler ;
142137 }
143138
144- Map <String , RateSampler > serviceRates = envServiceRates .get (lowerEnv );
139+ Map <String , RateSampler > serviceRates = envServiceRates .get (env );
145140 if (serviceRates == null ) {
146141 return fallbackSampler ;
147142 }
148- RateSampler sampler = serviceRates .get (lowerService );
143+ RateSampler sampler = serviceRates .get (service );
149144 return null == sampler ? fallbackSampler : sampler ;
150145 }
151146 }
0 commit comments