Skip to content

Commit e29d98b

Browse files
PastranaPastrana
Pastrana
authored and
Pastrana
committed
HPCC4J-612 WIP
- Adds util functions to detect use of otel javaagent - Adds logic to optionally bypass manual initialization of otelsdk Signed-off-by: Pastrana <[email protected]>
1 parent 1c5a18d commit e29d98b

File tree

3 files changed

+61
-8
lines changed

3 files changed

+61
-8
lines changed

pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@
135135
<groupId>io.opentelemetry</groupId>
136136
<artifactId>opentelemetry-exporter-otlp</artifactId>
137137
</dependency>
138+
<dependency>
139+
<groupId>io.opentelemetry.instrumentation</groupId>
140+
<artifactId>opentelemetry-instrumentation-annotations</artifactId>
141+
<version>2.6.0</version>
142+
</dependency>
138143
<dependency>
139144
<!-- Not managed by opentelemetry-bom -->
140145
<groupId>io.opentelemetry.semconv</groupId>

wsclient/src/main/java/org/hpccsystems/ws/client/utils/Utils.java

+44
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.io.OutputStream;
99
import java.io.PrintStream;
1010
import java.io.StringWriter;
11+
import java.lang.management.ManagementFactory;
1112
import java.net.HttpURLConnection;
1213
import java.net.URL;
1314
import java.net.URLConnection;
@@ -1261,4 +1262,47 @@ static public String getTraceParentHeader(Span span)
12611262

12621263
return traceparent;
12631264
}
1265+
1266+
static public boolean containsVMArgument(String vmArgName)
1267+
{
1268+
List<String> argslist = ManagementFactory.getRuntimeMXBean().getInputArguments();
1269+
for (String string : argslist)
1270+
{
1271+
if(string.matches("(?i)(" + vmArgName + "):.*"))
1272+
{
1273+
return true;
1274+
}
1275+
}
1276+
return false;
1277+
}
1278+
1279+
static public String fetchVMArgument(String vmArgName)
1280+
{
1281+
List<String> argslist = ManagementFactory.getRuntimeMXBean().getInputArguments();
1282+
for (String string : argslist)
1283+
{
1284+
if(string.matches("(?i)(" + vmArgName + "):.*"))
1285+
{
1286+
String[] keyval = string.split(vmArgName+":");
1287+
1288+
return keyval[1];
1289+
}
1290+
}
1291+
return "";
1292+
}
1293+
1294+
static public boolean isOtelJavaagentUsed()
1295+
{
1296+
String javaAgentPath = fetchVMArgument("-javaagent");
1297+
if (!javaAgentPath.isEmpty())
1298+
{
1299+
System.out.println("javaagent VM argument detected: " + javaAgentPath);
1300+
if (javaAgentPath.contains("opentelemetry"))
1301+
{
1302+
System.out.println("Otel javaagent argument detected: " + javaAgentPath);
1303+
return true;
1304+
}
1305+
}
1306+
return false;
1307+
}
12641308
}

wsclient/src/test/java/org/hpccsystems/ws/client/platform/test/PlatformTester.java

+12-8
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,25 @@ else if (currentParam.matches(WSSQLPORTPATTERN))
190190
System.out.println("If missing dependancies arise, test will halt!");
191191
System.out.println(" otel.traces.exporter sys property: "+System.getProperty("otel.traces.exporter"));
192192
System.out.println(" OTEL_TRACES_EXPORTER Env var: " + System.getenv("OTEL_TRACES_EXPORTER"));
193-
System.out.println(" OTEL_TRACES_SAMPLER Env var: " + System.getenv("OTEL_TRACES_SAMPLER"));
194-
System.out.println(" otel.traces.sampler sys property: "+System.getProperty("otel.traces.sampler"));
193+
System.out.println(" OTEL_TRACES_SAMPLER Env var: " + System.getenv("OTEL_TRACES_SAMPLER"));
194+
System.out.println(" otel.traces.sampler sys property: "+System.getProperty("otel.traces.sampler"));
195195
System.out.println(" otel.logs.exporter: "+ System.getProperty("otel.logs.exporter"));
196196
System.out.println(" OTEL_LOGS_EXPORTER Env var: " + System.getenv("OTEL_LOGS_EXPORTER"));
197197
System.out.println(" otel.metrics.exporter: "+ System.getProperty("otel.metrics.exporter"));
198198
System.out.println(" OTEL_METRICS_EXPORTER Env var: " + System.getenv("OTEL_METRICS_EXPORTER"));
199199

200-
globalOTel = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
201-
}
202-
else
203-
{
204-
globalOTel = GlobalOpenTelemetry.get();
200+
if (Utils.isOtelJavaagentUsed())
201+
{
202+
System.out.println("Otel javaagent enabled, will not initialize Otel SDK");
203+
globalOTel = GlobalOpenTelemetry.get();
204+
}
205+
else
206+
{
207+
globalOTel = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
208+
}
205209
}
206210

207-
Span rootSpan = globalOTel.getTracer("PlatformTester").spanBuilder("rootspan").startSpan();
211+
Span rootSpan = globalOTel.getTracer("PlatformTester").spanBuilder("PlatformTest").startSpan();
208212
try (Scope scope = rootSpan.makeCurrent())
209213
{
210214
Platform platform = Platform.get(prot, hpccServer, port, user, pass);

0 commit comments

Comments
 (0)