Skip to content

Commit f94401a

Browse files
authored
Catch exceptions in filter (#267)
adding try catch for filter jars implementations
1 parent 85deccd commit f94401a

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ public static Filter getFilter() {
5454
if (filter == null) {
5555
synchronized (FilterRegistry.class) {
5656
if (filter == null) {
57-
filter = load();
57+
try {
58+
filter = load();
59+
} catch (Throwable t) {
60+
logger.error("Throwable thrown while loading filter jars", t);
61+
}
5862
}
5963
}
6064
}

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,13 @@
2020
import java.util.List;
2121
import java.util.Map;
2222
import org.hypertrace.agent.filter.api.Filter;
23+
import org.slf4j.Logger;
24+
import org.slf4j.LoggerFactory;
2325

2426
class MultiFilter implements Filter {
2527

28+
private static final Logger logger = LoggerFactory.getLogger(MultiFilter.class);
29+
2630
private final List<Filter> filters;
2731

2832
public MultiFilter(List<Filter> filters) {
@@ -33,8 +37,15 @@ public MultiFilter(List<Filter> filters) {
3337
public boolean evaluateRequestHeaders(Span span, Map<String, String> headers) {
3438
boolean shouldBlock = false;
3539
for (Filter filter : filters) {
36-
if (filter.evaluateRequestHeaders(span, headers)) {
37-
shouldBlock = true;
40+
try {
41+
if (filter.evaluateRequestHeaders(span, headers)) {
42+
shouldBlock = true;
43+
}
44+
} catch (Throwable t) {
45+
logger.warn(
46+
"Throwable thrown while evaluating Request headers for filter {}",
47+
filter.getClass().getName(),
48+
t);
3849
}
3950
}
4051
return shouldBlock;
@@ -44,8 +55,15 @@ public boolean evaluateRequestHeaders(Span span, Map<String, String> headers) {
4455
public boolean evaluateRequestBody(Span span, String body) {
4556
boolean shouldBlock = false;
4657
for (Filter filter : filters) {
47-
if (filter.evaluateRequestBody(span, body)) {
48-
shouldBlock = true;
58+
try {
59+
if (filter.evaluateRequestBody(span, body)) {
60+
shouldBlock = true;
61+
}
62+
} catch (Throwable t) {
63+
logger.warn(
64+
"Throwable thrown while evaluating Request body for filter {}",
65+
filter.getClass().getName(),
66+
t);
4967
}
5068
}
5169
return shouldBlock;

0 commit comments

Comments
 (0)