From bb65435ffbdb8997d5fd3fc7bf1513389e2ae541 Mon Sep 17 00:00:00 2001 From: HyunGil Jeong Date: Thu, 28 May 2015 18:50:17 +0900 Subject: [PATCH] #488 added checks to filtering for NPE fix and RPC internal methods --- .../web/filter/DefaultFilterBuilder.java | 2 +- .../pinpoint/web/filter/FilterHint.java | 4 ++++ .../web/filter/FromToResponseFilter.java | 19 +++++++++++++++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/web/src/main/java/com/navercorp/pinpoint/web/filter/DefaultFilterBuilder.java b/web/src/main/java/com/navercorp/pinpoint/web/filter/DefaultFilterBuilder.java index 9a5d2afaa..e944caa7a 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/filter/DefaultFilterBuilder.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/filter/DefaultFilterBuilder.java @@ -149,7 +149,7 @@ public class DefaultFilterBuilder implements FilterBuilder { Long fromResponseTime = descriptor.getResponseFrom(); Long toResponseTime = descriptor.getResponseTo(); Boolean includeFailed = descriptor.getIncludeException(); - return new FromToResponseFilter(fromServiceType, fromApplicationName, fromAgentName, toServiceType, toApplicationName, toAgentName,fromResponseTime, toResponseTime, includeFailed, hint); + return new FromToResponseFilter(fromServiceType, fromApplicationName, fromAgentName, toServiceType, toApplicationName, toAgentName,fromResponseTime, toResponseTime, includeFailed, hint, this.registry); } private FromToFilter createFromToFilter(FilterDescriptor descriptor) { diff --git a/web/src/main/java/com/navercorp/pinpoint/web/filter/FilterHint.java b/web/src/main/java/com/navercorp/pinpoint/web/filter/FilterHint.java index 87ee338fd..07a776cbd 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/filter/FilterHint.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/filter/FilterHint.java @@ -46,6 +46,10 @@ public class FilterHint extends HashMap> { if (!containApplicationHint(applicationName)) { return false; } + + if (endPoint == null) { + return false; + } List list = get(applicationName); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/filter/FromToResponseFilter.java b/web/src/main/java/com/navercorp/pinpoint/web/filter/FromToResponseFilter.java index 7e18feb8d..f6a3497cb 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/filter/FromToResponseFilter.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/filter/FromToResponseFilter.java @@ -20,6 +20,7 @@ import java.util.List; import com.navercorp.pinpoint.common.bo.SpanBo; import com.navercorp.pinpoint.common.bo.SpanEventBo; +import com.navercorp.pinpoint.common.service.ServiceTypeRegistryService; import com.navercorp.pinpoint.common.trace.ServiceType; import com.navercorp.pinpoint.common.trace.ServiceTypeCategory; @@ -43,8 +44,10 @@ public class FromToResponseFilter implements Filter { private final Boolean includeFailed; private final FilterHint hint; + + private final ServiceTypeRegistryService registry; - public FromToResponseFilter(List fromServiceList, String fromApplicationName, String fromAgentName, List toServiceList, String toApplicationName, String toAgentName, Long fromResponseTime, Long toResponseTime, Boolean includeFailed, FilterHint hint) { + public FromToResponseFilter(List fromServiceList, String fromApplicationName, String fromAgentName, List toServiceList, String toApplicationName, String toAgentName, Long fromResponseTime, Long toResponseTime, Boolean includeFailed, FilterHint hint, ServiceTypeRegistryService registry) { if (fromServiceList == null) { throw new NullPointerException("fromServiceList must not be null"); @@ -61,6 +64,9 @@ public class FromToResponseFilter implements Filter { if (hint == null) { throw new NullPointerException("hint must not be null"); } + if (registry == null) { + throw new NullPointerException("registry must not be null"); + } this.fromServiceCode = fromServiceList; this.fromApplicationName = fromApplicationName; @@ -74,8 +80,9 @@ public class FromToResponseFilter implements Filter { this.toResponseTime = toResponseTime; this.includeFailed = includeFailed; - this.hint = hint; + + this.registry = registry; } private boolean checkResponseCondition(long elapsed, boolean hasError) { @@ -211,8 +218,12 @@ public class FromToResponseFilter implements Filter { return false; } - private boolean isRpcClient(short serviceType) { - return ServiceTypeCategory.RPC.contains(serviceType); + private boolean isRpcClient(short serviceTypeCode) { + if (ServiceTypeCategory.RPC.contains(serviceTypeCode)) { + ServiceType serviceType = this.registry.findServiceType(serviceTypeCode); + return serviceType.isRecordStatistics(); + } + return false; }