Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,12 @@
import com.navercorp.pinpoint.common.timeseries.time.Range;
import com.navercorp.pinpoint.common.timeseries.window.TimeWindow;
import com.navercorp.pinpoint.web.alarm.DataCollectorCategory;
import com.navercorp.pinpoint.web.applicationmap.dao.ApplicationResponse;
import com.navercorp.pinpoint.web.applicationmap.dao.MapResponseDao;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogram;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ResponseTime;

import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;

Expand Down Expand Up @@ -67,11 +66,10 @@ public void collect() {

Range range = Range.between(timeSlotEndTime - slotInterval, timeSlotEndTime);
TimeWindow timeWindow = new TimeWindow(range);
List<ResponseTime> responseTimes = responseDao.selectResponseTime(application, timeWindow);

for (ResponseTime responseTime : responseTimes) {
sum(responseTime.getAgentResponseHistogramList());
}
ApplicationResponse applicationResponse = responseDao.selectApplicationResponse(application, timeWindow);
sum(applicationResponse.getApplicationHistograms());


setSlowRate();
setErrorRate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

import com.navercorp.pinpoint.common.timeseries.time.Range;
import com.navercorp.pinpoint.common.timeseries.window.TimeWindow;
import com.navercorp.pinpoint.web.applicationmap.dao.ApplicationResponse;
import com.navercorp.pinpoint.web.applicationmap.dao.MapResponseDao;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationTimeHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationTimeHistogramBuilder;
import com.navercorp.pinpoint.web.applicationmap.histogram.Histogram;
Expand All @@ -45,9 +45,9 @@

@Override
public NodeHistogram createNodeHistogram(Application application, TimeWindow timeWindow) {
ApplicationHistogram applicationHistogram = mapResponseDao.selectApplicationResponseTime(application, timeWindow);
ApplicationResponse applicationResponse = mapResponseDao.selectApplicationResponse(application, timeWindow);

Check warning on line 48 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java#L48

Added line #L48 was not covered by tests

ApplicationTimeHistogram applicationTimeHistogram = buildApplicationTimeHistogram(application, timeWindow, applicationHistogram);
ApplicationTimeHistogram applicationTimeHistogram = buildApplicationTimeHistogram(application, timeWindow, applicationResponse);

Check warning on line 50 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java#L50

Added line #L50 was not covered by tests

Range windowRange = timeWindow.getWindowRange();
NodeHistogram.Builder builder = NodeHistogram.newBuilder(application, windowRange);
Expand All @@ -56,13 +56,13 @@
Histogram appHistogram = getHistogram(application, applicationTimeHistogram);
builder.setApplicationHistogram(appHistogram);

Map<String, Histogram> agentMap = getAgentIdMap(application, applicationHistogram.getAgentIds());
Map<String, Histogram> agentMap = getAgentIdMap(application, applicationResponse.getAgentIds());

Check warning on line 59 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java#L59

Added line #L59 was not covered by tests
builder.setAgentHistogramMap(agentMap);
return builder.build();
}

private ApplicationTimeHistogram buildApplicationTimeHistogram(Application application, TimeWindow timeWindow, ApplicationHistogram applicationHistogram) {
List<TimeHistogram> histogram = applicationHistogram.getApplicationHistograms();
private ApplicationTimeHistogram buildApplicationTimeHistogram(Application application, TimeWindow timeWindow, ApplicationResponse applicationResponse) {
List<TimeHistogram> histogram = applicationResponse.getApplicationHistograms();

Check warning on line 65 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/datasource/MapApplicationResponseNodeHistogramDataSource.java#L65

Added line #L65 was not covered by tests

ApplicationTimeHistogramBuilder builder = new ApplicationTimeHistogramBuilder(application, timeWindow);
return builder.buildFromTimeHistogram(histogram);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.navercorp.pinpoint.common.hbase.util.ScanMetricReporter;
import com.navercorp.pinpoint.common.server.executor.ExecutorCustomizer;
import com.navercorp.pinpoint.common.server.executor.ExecutorProperties;
import com.navercorp.pinpoint.web.applicationmap.dao.ApplicationResponse;
import com.navercorp.pinpoint.web.applicationmap.dao.MapInLinkDao;
import com.navercorp.pinpoint.web.applicationmap.dao.MapOutLinkDao;
import com.navercorp.pinpoint.web.applicationmap.dao.MapResponseDao;
Expand All @@ -40,7 +41,6 @@
import com.navercorp.pinpoint.web.applicationmap.dao.hbase.MapScanFactory;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.ResultExtractorFactory;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.RowMapperFactory;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationHistogram;
import com.navercorp.pinpoint.web.applicationmap.rawdata.LinkDataMap;
import com.navercorp.pinpoint.web.vo.RangeFactory;
import com.navercorp.pinpoint.web.vo.ResponseTime;
Expand Down Expand Up @@ -138,7 +138,7 @@ public MapResponseDao mapResponseDao(@Qualifier("mapHbaseTemplate")
@Qualifier("responseTimeResultExtractor")
ResultExtractorFactory<List<ResponseTime>> resultExtractFactory,
@Qualifier("applicationResponseTimeResultExtractor")
ResultExtractorFactory<ApplicationHistogram> applicationHistogramResultExtractor,
ResultExtractorFactory<ApplicationResponse> applicationHistogramResultExtractor,
MapScanFactory mapScanFactory,
@Qualifier("mapSelfRowKeyDistributor")
RowKeyDistributorByHashPrefix rowKeyDistributor) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


import com.navercorp.pinpoint.loader.service.ServiceTypeRegistryService;
import com.navercorp.pinpoint.web.applicationmap.dao.ApplicationResponse;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.ApplicationResponseTimeResultExtractor;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.InLinkMapper;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.LinkFilter;
Expand All @@ -10,7 +11,6 @@
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.ResponseTimeResultExtractor;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.ResultExtractorFactory;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.RowMapperFactory;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationHistogram;
import com.navercorp.pinpoint.web.applicationmap.rawdata.LinkDataMap;
import com.navercorp.pinpoint.web.component.ApplicationFactory;
import com.navercorp.pinpoint.web.vo.ResponseTime;
Expand Down Expand Up @@ -54,8 +54,8 @@ public ResultExtractorFactory<List<ResponseTime>> responseTimeResultExtractor(Se
}

@Bean
public ResultExtractorFactory<ApplicationHistogram> applicationResponseTimeResultExtractor(ServiceTypeRegistryService registry,
@Qualifier("mapSelfRowKeyDistributor")
public ResultExtractorFactory<ApplicationResponse> applicationResponseTimeResultExtractor(ServiceTypeRegistryService registry,
@Qualifier("mapSelfRowKeyDistributor")
RowKeyDistributorByHashPrefix rowKeyDistributor) {
return (windowFunction) -> new ApplicationResponseTimeResultExtractor(registry, rowKeyDistributor, windowFunction);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@
* limitations under the License.
*/

package com.navercorp.pinpoint.web.applicationmap.histogram;
package com.navercorp.pinpoint.web.applicationmap.dao;

import com.navercorp.pinpoint.common.trace.ServiceType;
import com.navercorp.pinpoint.web.applicationmap.histogram.Histogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogram;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.ArrayList;
import java.util.Comparator;
Expand All @@ -30,32 +33,24 @@
/**
* @author emeroad
*/
public class ApplicationHistogram {
public class ApplicationResponse {
// rowKey
private final String applicationName;
private final ServiceType applicationServiceType;
private final Application application;
// agentId is the key
private final List<TimeHistogram> histograms;
private final Set<String> agentIdMap;


ApplicationHistogram(String applicationName,
ServiceType applicationServiceType,
List<TimeHistogram> histograms,
Set<String> agentIdMap) {
this.applicationName = Objects.requireNonNull(applicationName, "applicationName");
this.applicationServiceType = Objects.requireNonNull(applicationServiceType, "applicationServiceType");
ApplicationResponse(Application application,
List<TimeHistogram> histograms,
Set<String> agentIdMap) {
this.application = Objects.requireNonNull(application, "application");
this.histograms = Objects.requireNonNull(histograms, "histograms");
this.agentIdMap = Objects.requireNonNull(agentIdMap, "agentIdMap");
}


public String getApplicationName() {
return applicationName;
}

public int getApplicationServiceType() {
return applicationServiceType.getCode();
public Application getApplication() {
return application;

Check warning on line 53 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java#L53

Added line #L53 was not covered by tests
}

public Set<String> getAgentIds() {
Expand All @@ -67,18 +62,23 @@
return histograms;
}

public Histogram getApplicationTotalHistogram() {
Histogram histogram = new Histogram(application.getServiceType());
histogram.addAll(histograms);
return histogram;
}

@Override
public String toString() {
return "ApplicationHistogram{" +
"applicationName='" + applicationName + '\'' +
", applicationServiceType=" + applicationServiceType +
"application='" + application + '\'' +
", histograms=" + histograms +
", agentIdMap=" + agentIdMap +
'}';
}

public static Builder newBuilder(String applicationName, ServiceType applicationServiceType) {
return new Builder(applicationName, applicationServiceType);
public static Builder newBuilder(Application application) {
return new Builder(application);
}

public static class Builder {
Expand All @@ -87,22 +87,24 @@
// agentId is the key
private final Set<String> agentIdMap;

private final String applicationName;
private final ServiceType applicationServiceType;
private final Application application;

Builder(String applicationName, ServiceType applicationServiceType) {
this.applicationName = Objects.requireNonNull(applicationName, "applicationName");
this.applicationServiceType = Objects.requireNonNull(applicationServiceType, "applicationServiceType");
Builder(Application application) {
this.application = Objects.requireNonNull(application, "application");
this.histogramMap = new HashMap<>();
this.agentIdMap = new HashSet<>();
}

public Application getApplication() {
return application;

Check warning on line 99 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java#L99

Added line #L99 was not covered by tests
}

public String getApplicationName() {
return applicationName;
return application.getName();

Check warning on line 103 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java#L103

Added line #L103 was not covered by tests
}

public ServiceType getApplicationServiceType() {
return applicationServiceType;
return application.getServiceType();

Check warning on line 107 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/ApplicationResponse.java#L107

Added line #L107 was not covered by tests
}

public void addResponseTime(String agentId, long timeStamp, short slotNumber, long count) {
Expand All @@ -112,7 +114,7 @@
}

private TimeHistogram getTimeHistogram(long timeStamp) {
return this.histogramMap.computeIfAbsent(timeStamp, k -> new TimeHistogram(applicationServiceType, timeStamp));
return this.histogramMap.computeIfAbsent(timeStamp, k -> new TimeHistogram(application.getServiceType(), timeStamp));
}


Expand All @@ -134,10 +136,10 @@
histogram.addCallCountByElapsedTime(elapsedTime, error);
}

public ApplicationHistogram build() {
public ApplicationResponse build() {
List<TimeHistogram> list = new ArrayList<>(this.histogramMap.values());
list.sort(Comparator.comparing(TimeHistogram::getTimeStamp));
return new ApplicationHistogram(applicationName, applicationServiceType, list, this.agentIdMap);
return new ApplicationResponse(application, list, this.agentIdMap);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
package com.navercorp.pinpoint.web.applicationmap.dao;

import com.navercorp.pinpoint.common.timeseries.window.TimeWindow;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogram;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ResponseTime;

import java.util.List;
import java.util.Map;

/**
*
Expand All @@ -32,7 +33,16 @@
public interface MapResponseDao {
List<ResponseTime> selectResponseTime(Application application, TimeWindow timeWindow);

default ApplicationHistogram selectApplicationResponseTime(Application application, TimeWindow timeWindow) {
return null;
default ApplicationResponse selectApplicationResponse(Application application, TimeWindow timeWindow) {
List<ResponseTime> responseTimes = selectResponseTime(application, timeWindow);
ApplicationResponse.Builder builder = ApplicationResponse.newBuilder(application);

Check warning on line 38 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/MapResponseDao.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/MapResponseDao.java#L37-L38

Added lines #L37 - L38 were not covered by tests
for (ResponseTime responseTime : responseTimes) {
for (Map.Entry<String, TimeHistogram> entry : responseTime.getAgentHistogram()) {
String agentId = entry.getKey();
TimeHistogram timeHistogram = entry.getValue();
builder.addResponseTime(agentId, timeHistogram.getTimeStamp(), timeHistogram);
}
}
return builder.build();

Check warning on line 46 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/MapResponseDao.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/MapResponseDao.java#L41-L46

Added lines #L41 - L46 were not covered by tests
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import com.navercorp.pinpoint.common.hbase.TableNameProvider;
import com.navercorp.pinpoint.common.timeseries.time.Range;
import com.navercorp.pinpoint.common.timeseries.window.TimeWindow;
import com.navercorp.pinpoint.web.applicationmap.dao.ApplicationResponse;
import com.navercorp.pinpoint.web.applicationmap.dao.MapResponseDao;
import com.navercorp.pinpoint.web.applicationmap.dao.mapper.ResultExtractorFactory;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationHistogram;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ResponseTime;
import com.sematext.hbase.wd.RowKeyDistributorByHashPrefix;
Expand Down Expand Up @@ -59,12 +59,12 @@
private final MapScanFactory scanFactory;

private final RowKeyDistributorByHashPrefix rowKeyDistributor;
private final ResultExtractorFactory<ApplicationHistogram> applicationHistogramResultExtractor;
private final ResultExtractorFactory<ApplicationResponse> applicationHistogramResultExtractor;

public HbaseMapResponseTimeDao(HbaseOperations hbaseOperations,
TableNameProvider tableNameProvider,
ResultExtractorFactory<List<ResponseTime>> resultExtractMapperFactory,
ResultExtractorFactory<ApplicationHistogram> applicationHistogramResultExtractor,
ResultExtractorFactory<ApplicationResponse> applicationHistogramResultExtractor,
MapScanFactory scanFactory,
RowKeyDistributorByHashPrefix rowKeyDistributor) {
this.hbaseOperations = Objects.requireNonNull(hbaseOperations, "hbaseOperations");
Expand Down Expand Up @@ -101,7 +101,7 @@
}

@Override
public ApplicationHistogram selectApplicationResponseTime(Application application, TimeWindow timeWindow) {
public ApplicationResponse selectApplicationResponse(Application application, TimeWindow timeWindow) {
Objects.requireNonNull(application, "application");

if (logger.isDebugEnabled()) {
Expand All @@ -111,13 +111,13 @@
Range windowRange = timeWindow.getWindowRange();
Scan scan = scanFactory.createScan("MapSelfScan", application, windowRange, DESCRIPTOR.getName());

ResultsExtractor<ApplicationHistogram> mapper = applicationHistogramResultExtractor.newMapper(timeWindow);
ResultsExtractor<ApplicationResponse> mapper = applicationHistogramResultExtractor.newMapper(timeWindow);

Check warning on line 114 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java#L114

Added line #L114 was not covered by tests
TableName mapStatisticsSelfTableName = tableNameProvider.getTableName(DESCRIPTOR.getTable());

ApplicationHistogram histogram = hbaseOperations.findParallel(mapStatisticsSelfTableName, scan, rowKeyDistributor,
ApplicationResponse histogram = hbaseOperations.findParallel(mapStatisticsSelfTableName, scan, rowKeyDistributor,

Check warning on line 117 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java#L117

Added line #L117 was not covered by tests
mapper, MAP_STATISTICS_SELF_VER2_NUM_PARTITIONS);
if (histogram == null) {
return ApplicationHistogram.newBuilder(application.getName(), application.getServiceType()).build();
return ApplicationResponse.newBuilder(application).build();

Check warning on line 120 in web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java

View check run for this annotation

Codecov / codecov/patch

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/hbase/HbaseMapResponseTimeDao.java#L120

Added line #L120 was not covered by tests
}
return histogram;
}
Expand Down
Loading