Skip to content

Commit 22906cd

Browse files
committed
an implementation that builds
1 parent a55c800 commit 22906cd

File tree

5 files changed

+30
-24
lines changed

5 files changed

+30
-24
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/AgentSpanExporter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.azure.monitor.opentelemetry.autoconfigure.implementation.SpanDataMapper;
99
import com.azure.monitor.opentelemetry.autoconfigure.implementation.logging.OperationLogger;
1010
import com.azure.monitor.opentelemetry.autoconfigure.implementation.models.TelemetryItem;
11-
import com.azure.monitor.opentelemetry.autoconfigure.implementation.quickpulse.QuickPulse;
1211
import com.azure.monitor.opentelemetry.autoconfigure.implementation.utils.Strings;
1312
import com.microsoft.applicationinsights.agent.internal.telemetry.BatchItemProcessor;
1413
import com.microsoft.applicationinsights.agent.internal.telemetry.TelemetryClient;
@@ -18,7 +17,6 @@
1817
import io.opentelemetry.sdk.trace.export.SpanExporter;
1918
import java.util.Collection;
2019
import java.util.function.Consumer;
21-
import javax.annotation.Nullable;
2220
import org.slf4j.Logger;
2321
import org.slf4j.LoggerFactory;
2422

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/RuntimeConfigurator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public void apply(RuntimeConfiguration runtimeConfig) {
138138
|| !Objects.equals(runtimeConfig.sampling.percentage, currentConfig.sampling.percentage)
139139
|| !Objects.equals(
140140
runtimeConfig.sampling.requestsPerSecond, currentConfig.sampling.requestsPerSecond)) {
141-
updateSampling(enabled, runtimeConfig.sampling, runtimeConfig.samplingPreview, null);
141+
updateSampling(enabled, runtimeConfig.sampling, runtimeConfig.samplingPreview, telemetryClient.getQuickPulse());
142142
}
143143

144144
// initialize Profiler

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,28 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) {
167167

168168
TelemetryClient.setActive(telemetryClient);
169169

170+
QuickPulse quickPulse;
171+
if (configuration.preview.liveMetrics.enabled) {
172+
quickPulse =
173+
QuickPulse.create(
174+
LazyHttpClient.newHttpPipeLineWithDefaultRedirect(configuration.authentication),
175+
() -> {
176+
ConnectionString connectionString = telemetryClient.getConnectionString();
177+
return connectionString == null ? null : connectionString.getLiveEndpoint();
178+
},
179+
telemetryClient::getInstrumentationKey,
180+
telemetryClient.getRoleName(),
181+
telemetryClient.getRoleInstance(),
182+
FirstEntryPoint.getAgentVersion());
183+
} else {
184+
quickPulse = null;
185+
}
186+
// quickPulse needs to be set before the runtimeConfigurator is created, so that when
187+
// the telemetry client is passed to the runtime configurator, the runtime configurator can
188+
// use it to pass quickPulse to the RuntimeConfigurator.updateSampling method. Sampling may
189+
// use quickPulse.isEnabled to determine if telemetry should be dropped or record only.
190+
telemetryClient.setQuickPulse(quickPulse);
191+
170192
// TODO (heya) remove duplicate code in both RuntimeConfigurator and SecondEntryPoint
171193
RuntimeConfigurator runtimeConfigurator =
172194
new RuntimeConfigurator(
@@ -221,24 +243,6 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) {
221243
// TODO (trask) add this method to AutoConfigurationCustomizer upstream?
222244
((AutoConfiguredOpenTelemetrySdkBuilder) autoConfiguration).disableShutdownHook();
223245

224-
QuickPulse quickPulse;
225-
if (configuration.preview.liveMetrics.enabled) {
226-
quickPulse =
227-
QuickPulse.create(
228-
LazyHttpClient.newHttpPipeLineWithDefaultRedirect(configuration.authentication),
229-
() -> {
230-
ConnectionString connectionString = telemetryClient.getConnectionString();
231-
return connectionString == null ? null : connectionString.getLiveEndpoint();
232-
},
233-
telemetryClient::getInstrumentationKey,
234-
telemetryClient.getRoleName(),
235-
telemetryClient.getRoleInstance(),
236-
FirstEntryPoint.getAgentVersion());
237-
} else {
238-
quickPulse = null;
239-
}
240-
telemetryClient.setQuickPulse(quickPulse);
241-
242246
AtomicBoolean firstLogRecordProcessor = new AtomicBoolean(true);
243247

244248

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/sampling/AiSampler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class AiSampler implements Sampler {
3030
private final SamplingPercentage parentlessDependencySamplingPercentage;
3131
private final boolean ingestionSamplingEnabled;
3232
private static final ClientLogger logger = new ClientLogger(AiSampler.class);
33-
private static QuickPulse quickPulse;
33+
private final QuickPulse quickPulse;
3434

3535
public static AiSampler create(
3636
SamplingPercentage requestSamplingPercentage,
@@ -52,7 +52,7 @@ private AiSampler(
5252
this.requestSamplingPercentage = requestSamplingPercentage;
5353
this.parentlessDependencySamplingPercentage = parentlessDependencySamplingPercentage;
5454
this.ingestionSamplingEnabled = ingestionSamplingEnabled;
55-
AiSampler.quickPulse = quickPulse;
55+
this.quickPulse = quickPulse;
5656
}
5757

5858
@Override
@@ -107,7 +107,7 @@ public SamplingResult shouldSample(
107107
}
108108

109109
@Nullable
110-
private static SamplingResult useLocalParentDecisionIfPossible(
110+
private SamplingResult useLocalParentDecisionIfPossible(
111111
SpanContext parentSpanContext, @Nullable Double parentSpanSampleRate) {
112112

113113
// remote parent-based sampling messes up item counts since item count is not propagated in

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/telemetry/TelemetryClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,10 @@ public void setQuickPulse(@Nullable QuickPulse quickPulse) {
424424
this.quickPulse = quickPulse;
425425
}
426426

427+
public QuickPulse getQuickPulse() {
428+
return quickPulse;
429+
}
430+
427431
public void setOtelResource(Resource resource) {
428432
otelResource = resource;
429433
}

0 commit comments

Comments
 (0)