Skip to content

Commit 2ba9e85

Browse files
authored
Fix cyclic reference in starter (#706)
1 parent f0d5f50 commit 2ba9e85

File tree

4 files changed

+6
-12
lines changed

4 files changed

+6
-12
lines changed

azure-application-insights-spring-boot-starter/src/main/java/com/microsoft/applicationinsights/boot/ApplicationInsightsModuleConfiguration.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.microsoft.applicationinsights.internal.channel.samplingV2.FixedRateSamplingTelemetryProcessor;
3232
import com.microsoft.applicationinsights.internal.heartbeat.HeartBeatModule;
3333
import com.microsoft.applicationinsights.internal.heartbeat.HeartBeatPayloadProviderInterface;
34-
import com.microsoft.applicationinsights.internal.heartbeat.HeartBeatProviderInterface;
3534
import com.microsoft.applicationinsights.internal.heartbeat.HeartbeatDefaultPayload;
3635
import com.microsoft.applicationinsights.internal.perfcounter.JvmPerformanceCountersModule;
3736
import com.microsoft.applicationinsights.internal.perfcounter.ProcessPerformanceCountersModule;
@@ -41,7 +40,6 @@
4140
import org.springframework.boot.context.properties.EnableConfigurationProperties;
4241
import org.springframework.context.annotation.Bean;
4342
import org.springframework.context.annotation.Configuration;
44-
import org.springframework.context.annotation.DependsOn;
4543
import org.springframework.core.env.Environment;
4644

4745
/**
@@ -102,7 +100,6 @@ public SpringBootTelemetryInitializer springBootTelemetryInitializer() {
102100
//FIXME: This should be conditional on operating System. However, current architecture of ProcessBuiltInPerformanceCountersFactory
103101
//FIXME: does not separate this concerns therefore cannot condition as of now.
104102
@Bean
105-
@DependsOn("performanceCounterContainer")
106103
@ConditionalOnProperty(value = "azure.application-insights.default-modules.ProcessPerformanceCountersModule.enabled", havingValue = "true", matchIfMissing = true)
107104
public ProcessPerformanceCountersModule processPerformanceCountersModule() {
108105
try {
@@ -119,7 +116,6 @@ public ProcessPerformanceCountersModule processPerformanceCountersModule() {
119116
* @return instance of {@link JvmPerformanceCountersModule}
120117
*/
121118
@Bean
122-
@DependsOn("performanceCounterContainer")
123119
@ConditionalOnProperty(value = "azure.application-insights.default.modules.JvmPerformanceCountersModule.enabled", havingValue = "true", matchIfMissing = true)
124120
public JvmPerformanceCountersModule jvmPerformanceCountersModule() {
125121
try {

azure-application-insights-spring-boot-starter/src/main/java/com/microsoft/applicationinsights/boot/ApplicationInsightsTelemetryAutoConfiguration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,20 @@
2626
import com.microsoft.applicationinsights.TelemetryClient;
2727
import com.microsoft.applicationinsights.TelemetryConfiguration;
2828
import com.microsoft.applicationinsights.boot.ApplicationInsightsProperties.Channel.InProcess;
29-
import com.microsoft.applicationinsights.boot.ApplicationInsightsProperties.TelemetryProcessor.Sampling;
3029
import com.microsoft.applicationinsights.channel.TelemetryChannel;
3130
import com.microsoft.applicationinsights.channel.concrete.inprocess.InProcessTelemetryChannel;
3231
import com.microsoft.applicationinsights.extensibility.ContextInitializer;
3332
import com.microsoft.applicationinsights.extensibility.TelemetryInitializer;
3433
import com.microsoft.applicationinsights.extensibility.TelemetryModule;
3534
import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
36-
import com.microsoft.applicationinsights.internal.channel.samplingV2.FixedRateSamplingTelemetryProcessor;
3735
import com.microsoft.applicationinsights.internal.logger.InternalLogger;
3836
import com.microsoft.applicationinsights.internal.perfcounter.PerformanceCounterContainer;
3937
import com.microsoft.applicationinsights.internal.quickpulse.QuickPulse;
4038
import java.util.Collection;
4139
import java.util.HashMap;
4240
import java.util.List;
4341
import java.util.Map;
42+
import javax.annotation.PostConstruct;
4443
import org.slf4j.Logger;
4544
import org.springframework.beans.factory.annotation.Autowired;
4645
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -180,15 +179,16 @@ public InternalLogger internalLogger() {
180179
return InternalLogger.INSTANCE;
181180
}
182181

183-
@Bean
184-
public PerformanceCounterContainer performanceCounterContainer() {
182+
// Configure properties of PerformanceCounter Container. Since this is ENUM type we do not need
183+
// a bean for this.
184+
@PostConstruct
185+
public void initializePerformanceCounterContainer() {
185186
ApplicationInsightsProperties.PerformanceCounter performanceCounter = applicationInsightsProperties.getPerformanceCounter();
186187
PerformanceCounterContainer.INSTANCE.setCollectionFrequencyInSec(performanceCounter.getCollectionFrequencyInSeconds());
187188

188189
ApplicationInsightsProperties.Jmx jmx = applicationInsightsProperties.getJmx();
189190
if (jmx.getJmxCounters() !=null && jmx.getJmxCounters().size() > 0) {
190191
applicationInsightsProperties.processAndLoadJmxCounters(jmx.getJmxCounters());
191192
}
192-
return PerformanceCounterContainer.INSTANCE;
193193
}
194194
}

azure-application-insights-spring-boot-starter/src/main/java/com/microsoft/applicationinsights/boot/ApplicationInsightsWebModuleConfiguration.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
3535
import org.springframework.context.annotation.Bean;
3636
import org.springframework.context.annotation.Configuration;
37-
import org.springframework.context.annotation.DependsOn;
3837

3938
/**
4039
* <h1>Web Configuration for Application Insights</h1>
@@ -88,7 +87,6 @@ public WebUserTrackingTelemetryModule webUserTrackingTelemetryModule() {
8887
* @return instance of {@link WebPerformanceCounterModule}
8988
*/
9089
@Bean
91-
@DependsOn("performanceCounterContainer")
9290
@ConditionalOnProperty(value = "azure.application-insights.default-modules.WebPerformanceCounterModule.enabled", havingValue = "true", matchIfMissing = true)
9391
public WebPerformanceCounterModule webPerformanceCounterModule() {
9492
return new WebPerformanceCounterModule();

azure-application-insights-spring-boot-starter/src/test/java/com/microsoft/applicationinsights/boot/ApplicationInsightsTelemetryAutoConfigurationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ public void shouldBeAbleToConfigureJmxPerformanceCounters() throws Exception{
250250
ApplicationInsightsTelemetryAutoConfiguration.class);
251251
context.refresh();
252252

253-
PerformanceCounterContainer counterContainer = context.getBean(PerformanceCounterContainer.class);
253+
PerformanceCounterContainer counterContainer = PerformanceCounterContainer.INSTANCE;
254254
Field field = counterContainer.getClass().getDeclaredField("performanceCounters");
255255
field.setAccessible(true);
256256
Map<String, PerformanceCounter> map = (Map<String, PerformanceCounter>)field.get(counterContainer);

0 commit comments

Comments
 (0)