Skip to content

Commit bb29758

Browse files
authored
Merge pull request #6 from hypertrace/main
pull main
2 parents 5f5c930 + 4e2b024 commit bb29758

File tree

24 files changed

+197
-24
lines changed

24 files changed

+197
-24
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ subprojects {
3030
extra.set("versions", mapOf(
3131
"opentelemetry" to "0.15.0",
3232
"opentelemetry_java_agent" to "0.15.1",
33-
"byte_buddy" to "1.10.18"
33+
"byte_buddy" to "1.10.18",
34+
"slf4j" to "1.7.30"
3435
))
3536

3637
apply<JavaPlugin>()

filter-api/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ dependencies {
99
api("io.opentelemetry:opentelemetry-api:${versions["opentelemetry"]}")
1010
api(project(":javaagent-core"))
1111
implementation("com.google.auto.service:auto-service:1.0-rc7")
12+
implementation("org.slf4j:slf4j-api:${versions["slf4j"]}")
1213
annotationProcessor("com.google.auto.service:auto-service:1.0-rc7")
1314
}

filter-api/src/main/java/org/hypertrace/agent/filter/FilterRegistry.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,19 @@
1616

1717
package org.hypertrace.agent.filter;
1818

19+
import com.google.protobuf.StringValue;
20+
import java.net.MalformedURLException;
21+
import java.net.URL;
22+
import java.net.URLClassLoader;
1923
import java.util.ArrayList;
20-
import java.util.Iterator;
2124
import java.util.List;
2225
import java.util.ServiceLoader;
2326
import org.hypertrace.agent.core.config.EnvironmentConfig;
27+
import org.hypertrace.agent.core.config.HypertraceConfig;
2428
import org.hypertrace.agent.filter.api.Filter;
2529
import org.hypertrace.agent.filter.spi.FilterProvider;
30+
import org.slf4j.Logger;
31+
import org.slf4j.LoggerFactory;
2632

2733
/**
2834
* Provides access to the {@link Filter} implementations. The {@link Filter} implementation are
@@ -33,6 +39,8 @@
3339
*/
3440
public class FilterRegistry {
3541

42+
private static final Logger logger = LoggerFactory.getLogger(FilterRegistry.class);
43+
3644
private FilterRegistry() {}
3745

3846
private static Filter filter;
@@ -54,11 +62,10 @@ public static Filter getFilter() {
5462
}
5563

5664
private static Filter load() {
57-
ServiceLoader<FilterProvider> providers = ServiceLoader.load(FilterProvider.class);
65+
ClassLoader cl = loadJars();
66+
ServiceLoader<FilterProvider> providers = ServiceLoader.load(FilterProvider.class, cl);
5867
List<Filter> filters = new ArrayList<>();
59-
Iterator<FilterProvider> iterator = providers.iterator();
60-
while (iterator.hasNext()) {
61-
FilterProvider provider = iterator.next();
68+
for (FilterProvider provider : providers) {
6269
String disabled =
6370
EnvironmentConfig.getProperty(getProviderDisabledPropertyName(provider.getClass()));
6471
if ("true".equalsIgnoreCase(disabled)) {
@@ -70,6 +77,23 @@ private static Filter load() {
7077
return new MultiFilter(filters);
7178
}
7279

80+
private static ClassLoader loadJars() {
81+
List<StringValue> jarPaths = HypertraceConfig.get().getJavaagent().getFilterJarPathsList();
82+
URL[] urls = new URL[jarPaths.size()];
83+
int i = 0;
84+
for (StringValue jarPath : jarPaths) {
85+
try {
86+
URL url = new URL("file", "", -1, jarPath.getValue());
87+
urls[i] = url;
88+
i++;
89+
} catch (MalformedURLException e) {
90+
logger.warn(
91+
String.format("Malformed URL exception for jar on path: %s", jarPath.getValue()), e);
92+
}
93+
}
94+
return new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
95+
}
96+
7397
public static String getProviderDisabledPropertyName(Class<?> clazz) {
7498
return String.format("ht.filter.provider.%s.disabled", clazz.getSimpleName());
7599
}

filter-custom-opa/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ plugins {
22
`java-library`
33
}
44

5+
val versions: Map<String, String> by extra
6+
57
dependencies {
68
api(project(":filter-api"))
7-
implementation("org.slf4j:slf4j-api:1.7.30")
9+
implementation("org.slf4j:slf4j-api:${versions["slf4j"]}")
810
implementation("com.squareup.okhttp3:okhttp:3.14.9")
911
implementation("com.fasterxml.jackson.core:jackson-databind:2.11.3")
1012
implementation("com.google.auto.service:auto-service:1.0-rc7")

instrumentation/apache-httpclient-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/apachehttpclient/v4_0/readall/ApacheClientReadAllInstrumentationModule.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ public static void exit(@Return Object response) {
205205
}
206206

207207
byte[] bodyBytes = buffer.toByteArray();
208-
System.out.printf("Captured response body: %s\n", new String(bodyBytes));
209208
currentSpan.setAttribute(
210209
HypertraceSemanticAttributes.HTTP_RESPONSE_BODY.getKey(), new String(bodyBytes));
211210
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bodyBytes);
@@ -216,8 +215,6 @@ public static void exit(@Return Object response) {
216215
// TODO log
217216
e.printStackTrace();
218217
}
219-
} else {
220-
System.out.println("\n\nIt is not HttpResponse #execute");
221218
}
222219
}
223220
}

instrumentation/servlet/servlet-3.0-no-wrapping/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/response/ServletOutputStreamContextAccessInstrumentationModule.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ static class TestAdvice {
7676
public static void enter(
7777
@Advice.Argument(0) ServletOutputStream servletOutputStream,
7878
@Advice.Argument(1) BoundedByteArrayOutputStream buffer) {
79-
System.out.println("adding to context");
8079
ContextStore<ServletOutputStream, BoundedByteArrayOutputStream> contextStore =
8180
InstrumentationContext.get(ServletOutputStream.class, BoundedByteArrayOutputStream.class);
8281
contextStore.put(servletOutputStream, buffer);

instrumentation/servlet/servlet-rw/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/rw/reader/BufferedReaderInstrumentation.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ public static void exit(
200200
return;
201201
}
202202

203-
System.out.println("Capturing readLine");
204203
if (line == null) {
205204
bufferSpanPair.captureBody(HypertraceSemanticAttributes.HTTP_REQUEST_BODY);
206205
} else {

instrumentation/servlet/servlet-rw/src/test/java/org/TestBufferedReader.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public TestBufferedReader(Reader in) {
2828

2929
@Override
3030
public String readLine() throws IOException {
31-
System.out.println("override readline");
3231
return super.readLine();
3332
}
3433
}

javaagent-core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ val versions: Map<String, String> by extra
2727
dependencies {
2828
api("io.opentelemetry:opentelemetry-api:${versions["opentelemetry"]}")
2929
api("io.opentelemetry.javaagent:opentelemetry-javaagent-api:${versions["opentelemetry_java_agent"]}")
30-
implementation("org.slf4j:slf4j-api:1.7.30")
30+
implementation("org.slf4j:slf4j-api:${versions["slf4j"]}")
3131

3232
api("com.google.protobuf:protobuf-java:3.11.4")
3333
api("com.google.protobuf:protobuf-java-util:3.11.4")

javaagent-core/src/main/java/org/hypertrace/agent/core/config/EnvironmentConfig.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.protobuf.StringValue;
2222
import org.hypertrace.agent.config.Config.AgentConfig;
2323
import org.hypertrace.agent.config.Config.DataCapture;
24+
import org.hypertrace.agent.config.Config.JavaAgent;
2425
import org.hypertrace.agent.config.Config.Message;
2526
import org.hypertrace.agent.config.Config.Opa;
2627
import org.hypertrace.agent.config.Config.Opa.Builder;
@@ -35,6 +36,7 @@ private EnvironmentConfig() {}
3536

3637
public static final String CONFIG_FILE_PROPERTY = HT_PREFIX + "config.file";
3738
static final String SERVICE_NAME = HT_PREFIX + "service.name";
39+
static final String ENABLED = HT_PREFIX + "enabled";
3840

3941
static final String PROPAGATION_FORMATS = HT_PREFIX + "propagation.formats";
4042

@@ -54,11 +56,18 @@ private EnvironmentConfig() {}
5456
public static final String CAPTURE_RPC_METADATA_PREFIX = CAPTURE_PREFIX + "rpc.metadata.";
5557
public static final String CAPTURE_RPC_BODY_PREFIX = CAPTURE_PREFIX + "rpc.body.";
5658

59+
private static final String JAVAAGENT_PREFIX = HT_PREFIX + "javaagent.";
60+
public static final String JAVAAGENT_FILTER_JAR_PATHS = JAVAAGENT_PREFIX + "filter.jar.paths";
61+
5762
public static AgentConfig.Builder applyPropertiesAndEnvVars(AgentConfig.Builder builder) {
5863
String serviceName = getProperty(SERVICE_NAME);
5964
if (serviceName != null) {
6065
builder.setServiceName(StringValue.newBuilder().setValue(serviceName).build());
6166
}
67+
String enabled = getProperty(ENABLED);
68+
if (enabled != null) {
69+
builder.setEnabled(BoolValue.newBuilder().setValue(Boolean.valueOf(enabled)).build());
70+
}
6271

6372
Reporting.Builder reportingBuilder = applyReporting(builder.getReporting().toBuilder());
6473
builder.setReporting(reportingBuilder);
@@ -67,6 +76,20 @@ public static AgentConfig.Builder applyPropertiesAndEnvVars(AgentConfig.Builder
6776
setDefaultsToDataCapture(builder.getDataCapture().toBuilder());
6877
builder.setDataCapture(dataCaptureBuilder);
6978
applyPropagationFormat(builder);
79+
JavaAgent.Builder javaagentBuilder = applyJavaAgent(builder.getJavaagentBuilder());
80+
builder.setJavaagent(javaagentBuilder);
81+
return builder;
82+
}
83+
84+
private static JavaAgent.Builder applyJavaAgent(JavaAgent.Builder builder) {
85+
String filterJarPaths = getProperty(JAVAAGENT_FILTER_JAR_PATHS);
86+
if (filterJarPaths != null) {
87+
builder.clearFilterJarPaths();
88+
String[] jarPaths = filterJarPaths.split(",");
89+
for (String jarPath : jarPaths) {
90+
builder.addFilterJarPaths(StringValue.newBuilder().setValue(jarPath));
91+
}
92+
}
7093
return builder;
7194
}
7295

0 commit comments

Comments
 (0)