Skip to content

Commit

Permalink
[pinpoint-apm#11310] Abbreviate sql in sql metadata if sql is too long
Browse files Browse the repository at this point in the history
  • Loading branch information
kojandy committed Jul 31, 2024
1 parent 7ebbfdf commit 27fe0e6
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ public class CollectorProperties {
@Value("${collector.statistics.agent-state.enable:false}")
private boolean statisticsAgentStateEnable;

@Value("${collector.metadata.sql.max-length:65536}")
private int maxSqlLength;


public List<String> getL4IpList() {
return List.of(l4IpList);
Expand Down Expand Up @@ -129,6 +132,10 @@ public boolean isStatisticsAgentStateEnable() {
return statisticsAgentStateEnable;
}

public int getMaxSqlLength() {
return maxSqlLength;
}

@PostConstruct
public void log() {
logger.info("{}", this);
Expand All @@ -138,15 +145,18 @@ public void log() {

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("CollectorConfiguration{");
sb.append(", l4IpList=").append(Arrays.toString(l4IpList));
sb.append(", metricJmxEnable=").append(metricJmxEnable);
sb.append(", metricJmxDomainName='").append(metricJmxDomainName).append('\'');
sb.append(", spanSamplingEnable=").append(spanSamplingEnable);
sb.append(", spanSamplingType=").append(spanSamplingType);
sb.append(", uriStatEnable=").append(uriStatEnable);
sb.append(", statisticsAgentStateEnable=").append(statisticsAgentStateEnable);
sb.append('}');
return sb.toString();
return "CollectorProperties{" +
"logger=" + logger +
", l4IpList=" + Arrays.toString(l4IpList) +
", metricJmxEnable=" + metricJmxEnable +
", metricJmxDomainName='" + metricJmxDomainName + '\'' +
", spanSamplingEnable=" + spanSamplingEnable +
", spanSamplingType='" + spanSamplingType + '\'' +
", spanModSamplingRate=" + spanModSamplingRate +
", spanPercentSamplingRate='" + spanPercentSamplingRate + '\'' +
", uriStatEnable=" + uriStatEnable +
", statisticsAgentStateEnable=" + statisticsAgentStateEnable +
", maxSqlLength=" + maxSqlLength +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@
package com.navercorp.pinpoint.collector.handler.grpc;

import com.google.protobuf.GeneratedMessageV3;
import com.navercorp.pinpoint.collector.config.CollectorProperties;
import com.navercorp.pinpoint.collector.handler.RequestResponseHandler;
import com.navercorp.pinpoint.collector.service.SqlMetaDataService;
import com.navercorp.pinpoint.common.config.Value;
import com.navercorp.pinpoint.common.server.bo.SqlMetaDataBo;
import com.navercorp.pinpoint.common.util.StringUtils;
import com.navercorp.pinpoint.grpc.Header;
import com.navercorp.pinpoint.grpc.MessageFormatUtils;
import com.navercorp.pinpoint.grpc.server.ServerContext;
Expand All @@ -46,9 +49,13 @@ public class GrpcSqlMetaDataHandler implements RequestResponseHandler<GeneratedM

private final SqlMetaDataService[] sqlMetaDataServices;

public GrpcSqlMetaDataHandler(SqlMetaDataService[] sqlMetaDataServices) {
private final int maxSqlLength;

public GrpcSqlMetaDataHandler(SqlMetaDataService[] sqlMetaDataServices, CollectorProperties collectorProperties) {
this.sqlMetaDataServices = Objects.requireNonNull(sqlMetaDataServices, "sqlMetaDataServices");
logger.info("SqlMetaDataServices {}", Arrays.toString(sqlMetaDataServices));
Objects.requireNonNull(collectorProperties, "collectorProperties");
this.maxSqlLength = collectorProperties.getMaxSqlLength();
}

@Override
Expand Down Expand Up @@ -90,11 +97,13 @@ private PResult handleSqlMetaData(PSqlMetaData sqlMetaData) {
return newResult(result);
}

private static SqlMetaDataBo mapSqlMetaDataBo(Header agentInfo, PSqlMetaData sqlMetaData) {
private SqlMetaDataBo mapSqlMetaDataBo(Header agentInfo, PSqlMetaData sqlMetaData) {
final String agentId = agentInfo.getAgentId();
final long agentStartTime = agentInfo.getAgentStartTime();
final int sqlId = sqlMetaData.getSqlId();
final String sql = sqlMetaData.getSql();
final String sql = sqlMetaData.getSql().length() <= maxSqlLength
? sqlMetaData.getSql()
: StringUtils.abbreviate(sqlMetaData.getSql(), maxSqlLength);

return new SqlMetaDataBo(agentId, agentStartTime, sqlId, sql);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
package com.navercorp.pinpoint.collector.handler.grpc;

import com.google.protobuf.GeneratedMessageV3;
import com.navercorp.pinpoint.collector.config.CollectorProperties;
import com.navercorp.pinpoint.collector.handler.RequestResponseHandler;
import com.navercorp.pinpoint.collector.service.SqlUidMetaDataService;
import com.navercorp.pinpoint.common.server.bo.SqlUidMetaDataBo;
import com.navercorp.pinpoint.common.util.StringUtils;
import com.navercorp.pinpoint.grpc.Header;
import com.navercorp.pinpoint.grpc.MessageFormatUtils;
import com.navercorp.pinpoint.grpc.server.ServerContext;
Expand All @@ -43,9 +45,13 @@ public class GrpcSqlUidMetaDataHandler implements RequestResponseHandler<Generat

private final SqlUidMetaDataService[] sqlUidMetaDataServices;

public GrpcSqlUidMetaDataHandler(SqlUidMetaDataService[] sqlUidMetaDataServices) {
private final int maxSqlLength;

public GrpcSqlUidMetaDataHandler(SqlUidMetaDataService[] sqlUidMetaDataServices, CollectorProperties collectorProperties) {
this.sqlUidMetaDataServices = Objects.requireNonNull(sqlUidMetaDataServices, "sqlUidMetaDataServices");
logger.info("SqlUidMetaDataServices {}", Arrays.toString(sqlUidMetaDataServices));
Objects.requireNonNull(collectorProperties, "collectorProperties");
this.maxSqlLength = collectorProperties.getMaxSqlLength();
}

@Override
Expand Down Expand Up @@ -87,12 +93,14 @@ private PResult handleSqlUidMetaData(PSqlUidMetaData sqlUidMetaData) {
return newResult(result);
}

private static SqlUidMetaDataBo mapSqlUidMetaDataBo(Header agentInfo, PSqlUidMetaData sqlUidMetaData) {
private SqlUidMetaDataBo mapSqlUidMetaDataBo(Header agentInfo, PSqlUidMetaData sqlUidMetaData) {
final String agentId = agentInfo.getAgentId();
final long agentStartTime = agentInfo.getAgentStartTime();
final String applicationName = agentInfo.getApplicationName();
final byte[] sqlUid = sqlUidMetaData.getSqlUid().toByteArray();
final String sql = sqlUidMetaData.getSql();
final String sql = sqlUidMetaData.getSql().length() <= maxSqlLength
? sqlUidMetaData.getSql()
: StringUtils.abbreviate(sqlUidMetaData.getSql(), maxSqlLength);

return new SqlUidMetaDataBo(agentId, agentStartTime, applicationName, sqlUid, sql);
}
Expand Down

0 comments on commit 27fe0e6

Please sign in to comment.