Skip to content

Commit d28fd42

Browse files
committed
make it mergeable without snapshot
1 parent 91976c0 commit d28fd42

File tree

4 files changed

+19
-50
lines changed

4 files changed

+19
-50
lines changed

dependencyManagement/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ data class DependencySet(val group: String, val version: String, val modules: Li
77
val dependencyVersions = hashMapOf<String, String>()
88
rootProject.extra["versions"] = dependencyVersions
99

10-
val otelInstrumentationVersion = "2.9.0-alpha-SNAPSHOT"
10+
val otelInstrumentationVersion = "2.8.0-alpha"
1111

1212
val DEPENDENCY_BOMS = listOf(
1313
"com.fasterxml.jackson:jackson-bom:2.17.2",

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxScraperContainer.java

+5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.List;
1414
import java.util.Locale;
1515
import java.util.Set;
16+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1617
import org.testcontainers.containers.GenericContainer;
1718
import org.testcontainers.containers.wait.strategy.Wait;
1819
import org.testcontainers.utility.MountableFile;
@@ -43,16 +44,19 @@ public JmxScraperContainer(String otlpEndpoint) {
4344
this.intervalMillis = 1000;
4445
}
4546

47+
@CanIgnoreReturnValue
4648
public JmxScraperContainer withTargetSystem(String targetSystem) {
4749
targetSystems.add(targetSystem);
4850
return this;
4951
}
5052

53+
@CanIgnoreReturnValue
5154
public JmxScraperContainer withIntervalMillis(int intervalMillis) {
5255
this.intervalMillis = intervalMillis;
5356
return this;
5457
}
5558

59+
@CanIgnoreReturnValue
5660
public JmxScraperContainer withService(String host, int port) {
5761
// TODO: adding a way to provide 'host:port' syntax would make this easier for end users
5862
this.serviceUrl =
@@ -61,6 +65,7 @@ public JmxScraperContainer withService(String host, int port) {
6165
return this;
6266
}
6367

68+
@CanIgnoreReturnValue
6469
public JmxScraperContainer withCustomYaml(String yamlPath) {
6570
this.customYaml.add(yamlPath);
6671
return this;

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/TestAppContainer.java

-4
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,6 @@ public TestAppContainer withUserAuth(String login, String pwd) {
6262
return this;
6363
}
6464

65-
public int getPort() {
66-
return getMappedPort(port);
67-
}
68-
6965
@Override
7066
protected void doStart() {
7167
super.doStart();

jmx-scraper/src/main/java/io/opentelemetry/contrib/jmxscraper/JmxScraper.java

+13-45
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,29 @@
55

66
package io.opentelemetry.contrib.jmxscraper;
77

8-
import io.opentelemetry.api.GlobalOpenTelemetry;
98
import io.opentelemetry.contrib.jmxscraper.client.JmxRemoteClient;
109
import io.opentelemetry.contrib.jmxscraper.config.ConfigurationException;
1110
import io.opentelemetry.contrib.jmxscraper.config.JmxScraperConfig;
1211
import io.opentelemetry.contrib.jmxscraper.config.JmxScraperConfigFactory;
13-
import io.opentelemetry.instrumentation.jmx.engine.JmxMetricInsight;
14-
import io.opentelemetry.instrumentation.jmx.engine.MetricConfiguration;
1512
import java.io.DataInputStream;
1613
import java.io.IOException;
1714
import java.io.InputStream;
1815
import java.nio.file.Files;
1916
import java.nio.file.Paths;
2017
import java.util.Arrays;
21-
import java.util.Collections;
2218
import java.util.List;
2319
import java.util.Properties;
24-
import java.util.concurrent.Executors;
25-
import java.util.concurrent.ScheduledExecutorService;
26-
import java.util.concurrent.TimeUnit;
2720
import java.util.logging.Logger;
28-
import javax.annotation.Nullable;
2921
import javax.management.MBeanServerConnection;
3022
import javax.management.remote.JMXConnector;
3123

3224
public class JmxScraper {
3325
private static final Logger logger = Logger.getLogger(JmxScraper.class.getName());
34-
private static final int EXECUTOR_TERMINATION_TIMEOUT_MS = 5000;
35-
private final ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
36-
private final JmxScraperConfig config;
26+
3727
private final JmxRemoteClient client;
38-
private final JmxMetricInsight service;
39-
@Nullable private MBeanServerConnection connection;
28+
29+
// TODO depend on instrumentation 2.9.0 snapshot
30+
// private final JmxMetricInsight service;
4031

4132
/**
4233
* Main method to create and run a {@link JmxScraper} instance.
@@ -52,7 +43,6 @@ public static void main(String[] args) {
5243
JmxScraper jmxScraper = new JmxScraper(config);
5344
jmxScraper.start();
5445

55-
Runtime.getRuntime().addShutdownHook(new Thread(jmxScraper::shutdown));
5646
} catch (ArgumentsParsingException e) {
5747
System.err.println(
5848
"Usage: java -jar <path_to_jmxscraper.jar> "
@@ -106,7 +96,6 @@ private static void loadPropertiesFromPath(Properties props, String path)
10696
}
10797

10898
JmxScraper(JmxScraperConfig config) throws ConfigurationException {
109-
this.config = config;
11099

111100
String serviceUrl = config.getServiceUrl();
112101
if (serviceUrl == null) {
@@ -117,46 +106,25 @@ private static void loadPropertiesFromPath(Properties props, String path)
117106
throw new ConfigurationException("interval must be positive");
118107
}
119108
this.client = JmxRemoteClient.createNew(serviceUrl);
120-
this.service = JmxMetricInsight.createService(GlobalOpenTelemetry.get(), interval);
109+
// TODO: depend on instrumentation 2.9.0 snapshot
110+
// this.service = JmxMetricInsight.createService(GlobalOpenTelemetry.get(), interval);
121111
}
122112

123113
private void start() {
114+
@SuppressWarnings("unused")
115+
MBeanServerConnection connection;
124116
try {
125117
JMXConnector connector = client.connect();
126118
connection = connector.getMBeanServerConnection();
127119
} catch (IOException e) {
128120
throw new IllegalStateException(e);
129121
}
130-
service.startRemote(getMetricConfig(config), () -> Collections.singletonList(connection));
131-
logger.info("JMX scraping started");
132-
}
133-
134-
@SuppressWarnings("unused")
135-
private static MetricConfiguration getMetricConfig(JmxScraperConfig config) {
136-
MetricConfiguration metricConfig = new MetricConfiguration();
137122

138-
return metricConfig;
139-
}
123+
// TODO: depend on instrumentation 2.9.0 snapshot
124+
// MetricConfiguration metricConfig = new MetricConfiguration();
125+
// TODO create JMX insight config from scraper config
126+
// service.startRemote(metricConfig, () -> Collections.singletonList(connection));
140127

141-
private void shutdown() {
142-
logger.info("Shutting down JmxScraper and exporting final metrics.");
143-
// Prevent new tasks to be submitted
144-
exec.shutdown();
145-
try {
146-
// Wait a while for existing tasks to terminate
147-
if (!exec.awaitTermination(EXECUTOR_TERMINATION_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
148-
// Cancel currently executing tasks
149-
exec.shutdownNow();
150-
// Wait a while for tasks to respond to being cancelled
151-
if (!exec.awaitTermination(EXECUTOR_TERMINATION_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
152-
logger.warning("Thread pool did not terminate in time: " + exec);
153-
}
154-
}
155-
} catch (InterruptedException e) {
156-
// (Re-)Cancel if current thread also interrupted
157-
exec.shutdownNow();
158-
// Preserve interrupt status
159-
Thread.currentThread().interrupt();
160-
}
128+
logger.info("JMX scraping started");
161129
}
162130
}

0 commit comments

Comments
 (0)