diff --git a/src/main/java/com/nhn/pinpoint/web/calltree/span/SpanAligner2.java b/src/main/java/com/nhn/pinpoint/web/calltree/span/SpanAligner2.java index cb39c9982..0ba58f1ac 100644 --- a/src/main/java/com/nhn/pinpoint/web/calltree/span/SpanAligner2.java +++ b/src/main/java/com/nhn/pinpoint/web/calltree/span/SpanAligner2.java @@ -33,9 +33,13 @@ public class SpanAligner2 { this.rootSpanId = findRootSpanId(spans, collectorAcceptTime); } - private long findRootSpanId(List spans, long collectorAcceptTime) { + private long findRootSpanId(List spanList, long collectorAcceptTime) { + if (spanList == null) { + throw new NullPointerException("spanList must not be null"); + } + final List root = new ArrayList(); - for (SpanBo span : spans) { + for (SpanBo span : spanList) { if (span.getParentSpanId() == ROOT) { root.add(span); } @@ -51,7 +55,7 @@ public class SpanAligner2 { } // 버그 rootspan이 2개 이상인 경우는 로직 버그이다. 아무거나 잡아서 데이터를 뿌려줘야 되나? if (rootSpanBoSize > 1) { - logger.warn("parentSpanId(-1) collision. size:{} root span:{} allSpan:{}", rootSpanBoSize, root, spans); + logger.warn("parentSpanId(-1) collision. size:{} root span:{} allSpan:{}", rootSpanBoSize, root, spanList); throw new IllegalStateException("parentSpanId(-1) collision. size:" + rootSpanBoSize); } @@ -59,7 +63,7 @@ public class SpanAligner2 { // 차선책으로 자신이 조회한 span의 시작 시간을 기준으로 span을 조회한다. // span에서 데이터를 추출하는 것이기 때문에, 왠간하면 데이터는 존재함. hbase insert시 data insert를 실패할 경우 없을수 있음. final List collectorAcceptTimeMatcher = new ArrayList(); - for(SpanBo span : spans) { + for(SpanBo span : spanList) { // collectorTime이 힌트로 들어온다. if (span.getCollectorAcceptTime() == collectorAcceptTime) { collectorAcceptTimeMatcher.add(span); @@ -81,11 +85,11 @@ public class SpanAligner2 { return spanBo.getSpanId(); } if (startMatchSize > 1) { - logger.warn("collectorAcceptTime match collision. size:{} collectorAcceptTime:{} allSpan:{}", startMatchSize, collectorAcceptTime, spans); + logger.warn("collectorAcceptTime match collision. size:{} collectorAcceptTime:{} allSpan:{}", startMatchSize, collectorAcceptTime, spanList); throw new IllegalStateException("startTime match collision size:" + startMatchSize + " collectorAcceptTime:" + collectorAcceptTime); } // 여기서 다음상황으로 더 정확하게 매치가 가능한가? 마땅히 call stack을 랜더링 할수 있는 방법 없음 - logger.warn("collectorAcceptTime match not found. size:{} collectorAcceptTime:{} allSpan:{}", startMatchSize, collectorAcceptTime, spans); + logger.warn("collectorAcceptTime match not found. size:{} collectorAcceptTime:{} allSpan:{}", startMatchSize, collectorAcceptTime, spanList); throw new IllegalStateException("startTime match not found startTime size:" + startMatchSize + " collectorAcceptTime:" + collectorAcceptTime); } diff --git a/src/main/java/com/nhn/pinpoint/web/controller/FilteredApplicationMapController.java b/src/main/java/com/nhn/pinpoint/web/controller/FilteredApplicationMapController.java index 8234856e7..971f2751c 100644 --- a/src/main/java/com/nhn/pinpoint/web/controller/FilteredApplicationMapController.java +++ b/src/main/java/com/nhn/pinpoint/web/controller/FilteredApplicationMapController.java @@ -62,9 +62,10 @@ public class FilteredApplicationMapController { @RequestParam("to") long to, @RequestParam(value = "filter", required = false) String filterText, @RequestParam(value = "limit", required = false, defaultValue = "10000") int limit) { + limit = LimitUtils.checkRange(limit); - LimitedScanResult> limitedScanResult = filteredApplicationMapService.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit); - Filter filter = filterBuilder.build(filterText); + final LimitedScanResult> limitedScanResult = filteredApplicationMapService.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit); + final Filter filter = filterBuilder.build(filterText); ApplicationMap map = filteredApplicationMapService.selectApplicationMap(limitedScanResult.getScanData(), from, to, filter); @@ -104,6 +105,7 @@ public class FilteredApplicationMapController { @RequestParam("period") long period, @RequestParam(value = "filter", required = false) String filterText, @RequestParam(value = "limit", required = false, defaultValue = "1000000") int limit) { + limit = LimitUtils.checkRange(limit); long to = TimeUtils.getDelayLastTime(); long from = to - period; diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java index cc2f5d072..5f3363fd7 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java @@ -128,6 +128,10 @@ public class HbaseAgentInfoDao implements AgentInfoDao { @Override @Deprecated public AgentInfoBo findAgentInfoBeforeStartTime(final String agentId, final long currentTime) { + if (agentId == null) { + throw new NullPointerException("agentId must not be null"); + } + // TODO cache를 걸어야 될듯 하다. Scan scan = createScan(agentId, currentTime); AgentInfoBo agentInfoBo = hbaseOperations2.find(HBaseTables.AGENTINFO, scan, new ResultsExtractor() { diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCalleeDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCalleeDao.java index 886870feb..1f938996f 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCalleeDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCalleeDao.java @@ -26,6 +26,7 @@ import com.nhn.pinpoint.common.util.TimeSlot; /** * * @author netspider + * @author emeroad * */ @Repository @@ -79,7 +80,7 @@ public class HbaseApplicationMapStatisticsCalleeDao implements ApplicationMapSta @Override public List>> selectCalleeStatistics(String callerApplicationName, short callerServiceType, String calleeApplicationName, short calleeServiceType, long from, long to) { if (logger.isDebugEnabled()) { - logger.debug("selectCalleeStatistics. " + callerApplicationName + ", " + callerServiceType + ", " + calleeApplicationName + ", " + calleeServiceType + ", " + from + ", " + to); + logger.debug("selectCalleeStatistics. {}, {}, {}, {}, {}, {}", callerApplicationName, callerServiceType, calleeApplicationName, calleeServiceType, from, to); } Scan scan = createScan(callerApplicationName, callerServiceType, from, to); RowMapper>> mapper = new ApplicationMapLinkStatisticsMapper(callerApplicationName, callerServiceType, calleeApplicationName, calleeServiceType); diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCallerDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCallerDao.java index b858b1560..15dd6a4a2 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCallerDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationMapStatisticsCallerDao.java @@ -26,6 +26,7 @@ import com.nhn.pinpoint.common.util.TimeSlot; /** * * @author netspider + * @author emeroad * */ @Repository @@ -79,7 +80,7 @@ public class HbaseApplicationMapStatisticsCallerDao implements ApplicationMapSta @Override public List>> selectCallerStatistics(String callerApplicationName, short callerServiceType, String calleeApplicationName, short calleeServiceType, long from, long to) { if (logger.isDebugEnabled()) { - logger.debug("selectCallerStatistics. " + callerApplicationName + ", " + callerServiceType + ", " + calleeApplicationName + ", " + calleeServiceType + ", " + from + ", " + to); + logger.debug("selectCallerStatistics. {}, {}, {}, {}, {}, {}", callerApplicationName, callerServiceType, calleeApplicationName, calleeServiceType, from, to); } Scan scan = createScan(calleeApplicationName, calleeServiceType, from, to); RowMapper>> mapper = new ApplicationMapLinkStatisticsMapper(callerApplicationName, callerServiceType, calleeApplicationName, calleeServiceType); diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java index 71d10048b..7ba538f81 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java @@ -59,6 +59,9 @@ public class HbaseApplicationTraceIndexDao implements ApplicationTraceIndexDao { @Override public LimitedScanResult> scanTraceIndex(final String applicationName, long start, long end, int limit) { + if (applicationName == null) { + throw new NullPointerException("applicationName must not be null"); + } if (limit < 0) { throw new IllegalArgumentException("negative limit:" + limit); } @@ -142,6 +145,9 @@ public class HbaseApplicationTraceIndexDao implements ApplicationTraceIndexDao { @Override public List scanTraceScatter(String applicationName, long start, long end, final int limit) { + if (applicationName == null) { + throw new NullPointerException("applicationName must not be null"); + } if (limit < 0) { throw new IllegalArgumentException("negative limit:" + limit); } diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseHostApplicationMapDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseHostApplicationMapDao.java index 59f2c7e2b..c9f9ef563 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseHostApplicationMapDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseHostApplicationMapDao.java @@ -23,6 +23,7 @@ import com.nhn.pinpoint.common.util.TimeUtils; /** * * @author netspider + * @author emeroad * */ @Repository @@ -40,6 +41,9 @@ public class HbaseHostApplicationMapDao implements HostApplicationMapDao { @Override public Application findApplicationName(String host, long from, long to) { + if (host == null) { + throw new NullPointerException("host must not be null"); + } Scan scan = createScan(host, from, to); List result = hbaseOperations2.find(HBaseTables.HOST_APPLICATION_MAP, scan, hostApplicationMapper); if (result != null && result.size() > 0) { @@ -50,7 +54,7 @@ public class HbaseHostApplicationMapDao implements HostApplicationMapDao { } private Scan createScan(String host, long from, long to) { - long startTime = TimeUtils.reverseCurrentTimeMillis(TimeSlot.getStatisticsRowSlot(from)); + long startTime = TimeUtils.reverseCurrentTimeMillis(TimeSlot.getStatisticsRowSlot(from)); long endTime = TimeUtils.reverseCurrentTimeMillis(TimeSlot.getStatisticsRowSlot(to) + 1); if (logger.isDebugEnabled()) { diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseSqlMetaDataDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseSqlMetaDataDao.java index 291972245..d41d22e77 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseSqlMetaDataDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseSqlMetaDataDao.java @@ -33,6 +33,10 @@ public class HbaseSqlMetaDataDao implements SqlMetaDataDao { @Override public List getSqlMetaData(String agentId, long time, int hashCode) { + if (agentId == null) { + throw new NullPointerException("agentId must not be null"); + } + SqlMetaDataBo sqlMetaData = new SqlMetaDataBo(agentId, time, hashCode); byte[] sqlId = getDistributedKey(sqlMetaData.toRowKey()); diff --git a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseStringMetaDataDao.java b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseStringMetaDataDao.java index d6ccfc06c..9494a10b8 100644 --- a/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseStringMetaDataDao.java +++ b/src/main/java/com/nhn/pinpoint/web/dao/hbase/HbaseStringMetaDataDao.java @@ -32,6 +32,10 @@ public class HbaseStringMetaDataDao implements StringMetaDataDao { @Override public List getStringMetaData(String agentId, long time, int stringId) { + if (agentId == null) { + throw new NullPointerException("agentId must not be null"); + } + StringMetaDataBo stringMetaData = new StringMetaDataBo(agentId, time, stringId); byte[] rowKey = getDistributedKey(stringMetaData.toRowKey());