diff --git a/agent-module/agent/src/main/resources/pinpoint-root.config b/agent-module/agent/src/main/resources/pinpoint-root.config index 8ac3040d0592..b9150741bb44 100644 --- a/agent-module/agent/src/main/resources/pinpoint-root.config +++ b/agent-module/agent/src/main/resources/pinpoint-root.config @@ -53,8 +53,11 @@ profiler.transport.grpc.metadata.ssl.enable=false profiler.transport.grpc.metadata.sender.executor.queue.size=1000 profiler.transport.grpc.metadata.sender.channel.executor.queue.size=1000 profiler.transport.grpc.metadata.sender.request.timeout.millis=6000 -profiler.transport.grpc.metadata.sender.retry.max.count=3 -profiler.transport.grpc.metadata.sender.retry.delay.millis=1000 +profiler.transport.grpc.metadata.sender.retry.enable=true +profiler.transport.grpc.metadata.sender.retry.buffer.size=16M +profiler.transport.grpc.metadata.sender.retry.per.rpc.buffer.limit=1M +profiler.transport.grpc.metadata.sender.max.attempts=3 +profiler.transport.grpc.metadata.sender.hedging.delay.millis=1000 profiler.transport.grpc.metadata.sender.keepalive.time.millis=30000 profiler.transport.grpc.metadata.sender.keepalive.timeout.millis=60000 profiler.transport.grpc.metadata.sender.loadbalancer=pick_first diff --git a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataService.java b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataService.java index 1136c7586105..29e61b953e2f 100644 --- a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataService.java +++ b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataService.java @@ -17,7 +17,7 @@ package com.navercorp.pinpoint.profiler.test; import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.io.ResponseMessage; import com.navercorp.pinpoint.profiler.cache.IdAllocator; import com.navercorp.pinpoint.profiler.cache.Result; @@ -35,10 +35,10 @@ public class MockApiMetaDataService implements ApiMetaDataService { private final SimpleCache apiCache = new SimpleCache<>(new IdAllocator.ZigZagAllocator()); - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; - public MockApiMetaDataService(EnhancedDataSender enhancedDataSender) { - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + public MockApiMetaDataService(DataSender dataSender) { + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); } @Override @@ -51,7 +51,7 @@ public int cacheApi(final MethodDescriptor methodDescriptor) { final ApiMetaData apiMetadata = new ApiMetaData(result.getId(), methodDescriptor.getApiDescriptor(), methodDescriptor.getLineNumber(), methodDescriptor.getType()); - this.enhancedDataSender.request(apiMetadata); + this.dataSender.send(apiMetadata); return result.getId(); } diff --git a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataServiceProvider.java b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataServiceProvider.java index 5eb61f853f4e..3cc9c263d0a0 100644 --- a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataServiceProvider.java +++ b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/MockApiMetaDataServiceProvider.java @@ -18,8 +18,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService; import com.navercorp.pinpoint.profiler.metadata.MetaDataType; @@ -30,17 +29,17 @@ */ public class MockApiMetaDataServiceProvider implements Provider { - private final Provider> enhancedDataSenderProvider; + private final Provider> dataSenderProvider; @Inject - public MockApiMetaDataServiceProvider(Provider> enhancedDataSenderProvider) { - this.enhancedDataSenderProvider = Objects.requireNonNull(enhancedDataSenderProvider, "enhancedDataSenderProvider"); + public MockApiMetaDataServiceProvider(Provider> dataSenderProvider) { + this.dataSenderProvider = Objects.requireNonNull(dataSenderProvider, "dataSenderProvider"); } @Override public ApiMetaDataService get() { - final EnhancedDataSender enhancedDataSender = this.enhancedDataSenderProvider.get(); - return new MockApiMetaDataService(enhancedDataSender); + final DataSender dataSender = this.dataSenderProvider.get(); + return new MockApiMetaDataService(dataSender); } } diff --git a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/PluginApplicationContextModule.java b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/PluginApplicationContextModule.java index cb951e811ffd..39b8241359a1 100644 --- a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/PluginApplicationContextModule.java +++ b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/PluginApplicationContextModule.java @@ -26,6 +26,7 @@ import com.navercorp.pinpoint.profiler.context.DefaultServerMetaDataRegistryService; import com.navercorp.pinpoint.profiler.context.ServerMetaDataRegistryService; import com.navercorp.pinpoint.profiler.context.SpanType; +import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; import com.navercorp.pinpoint.profiler.context.module.SpanDataSender; import com.navercorp.pinpoint.profiler.context.module.StatDataSender; import com.navercorp.pinpoint.profiler.context.storage.StorageFactory; @@ -64,6 +65,12 @@ protected void configure() { Key> statDataSenderKey = Key.get(statDataSenderType, StatDataSender.class); bind(statDataSenderKey).toInstance(statDataSender); + final DataSender metadataDataSender = newUdpMetadataDataSender(); + logger.debug("metadataDataSender:{}", metadataDataSender); + TypeLiteral> metadataDataSenderType = new TypeLiteral>() {}; + Key> metadataDataSenderKey = Key.get(metadataDataSenderType, MetadataDataSender.class); + bind(metadataDataSenderKey).toInstance(metadataDataSender); + bind(StorageFactory.class).to(TestSpanStorageFactory.class); EnhancedDataSender enhancedDataSender = newTcpDataSender(); @@ -76,6 +83,9 @@ protected void configure() { bind(ApiMetaDataService.class).toProvider(MockApiMetaDataServiceProvider.class).in(Scopes.SINGLETON); } + private DataSender newUdpMetadataDataSender() { + return new ListenableDataSender<>("MetadataDataSender"); + } private DataSender newUdpStatDataSender() { return new ListenableDataSender<>("StatDataSender"); diff --git a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/rpc/MockRpcModule.java b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/rpc/MockRpcModule.java index fddaf03d0007..99ca54f48e2a 100644 --- a/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/rpc/MockRpcModule.java +++ b/agent-module/profiler-test/src/main/java/com/navercorp/pinpoint/profiler/test/rpc/MockRpcModule.java @@ -72,6 +72,13 @@ protected void configure() { bind(statDataSenderKey).toInstance(statDataSender); expose(statDataSenderKey); + TypeLiteral> metadataDataSenderTypeLiteral = new TypeLiteral>() {}; + Key> metadataDataSenderKey = Key.get(metadataDataSenderTypeLiteral, MetadataDataSender.class); + final DataSender metadataDataSender = new ListenableDataSender<>("MetadataDataSender"); + logger.debug("metadataDataSender:{}", metadataDataSender); + bind(metadataDataSenderKey).toInstance(metadataDataSender); + expose(metadataDataSenderKey); + EnhancedDataSender enhancedDataSender = new TestTcpDataSender(); logger.debug("enhancedDataSender:{}", enhancedDataSender); TypeLiteral> dataSenderTypeLiteral = new TypeLiteral>() { @@ -83,10 +90,6 @@ protected void configure() { bind(agentDataSender).to(dataSenderTypeLiteral).in(Scopes.SINGLETON); expose(agentDataSender); - Key> metadataDataSender = Key.get(dataSenderTypeLiteral, MetadataDataSender.class); - bind(metadataDataSender).to(dataSenderTypeLiteral).in(Scopes.SINGLETON); - expose(metadataDataSender); - TypeLiteral> resultMessageConverter = new TypeLiteral>() {}; Key> resultMessageConverterKey = Key.get(resultMessageConverter, ResultConverter.class); diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/BufferedExceptionStorage.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/BufferedExceptionStorage.java index 8f30a90f9067..8380e48cb5e1 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/BufferedExceptionStorage.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/BufferedExceptionStorage.java @@ -15,9 +15,8 @@ */ package com.navercorp.pinpoint.profiler.context.exception.storage; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.common.util.CollectionUtils; -import com.navercorp.pinpoint.io.ResponseMessage; import com.navercorp.pinpoint.profiler.context.exception.model.ExceptionMetaData; import com.navercorp.pinpoint.profiler.context.exception.model.ExceptionMetaDataFactory; import com.navercorp.pinpoint.profiler.context.exception.model.ExceptionWrapper; @@ -38,12 +37,12 @@ public class BufferedExceptionStorage implements ExceptionStorage { private static final boolean isDebug = logger.isDebugEnabled(); private final ArrayBuffer buffer; - private final EnhancedDataSender dataSender; + private final DataSender dataSender; private final ExceptionMetaDataFactory factory; public BufferedExceptionStorage( int bufferSize, - EnhancedDataSender dataSender, + DataSender dataSender, ExceptionMetaDataFactory exceptionMetaDataFactory ) { this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); @@ -79,7 +78,7 @@ private void sendExceptionMetaData(List exceptionWrappers) { if (isDebug) { logger.debug("Flush {}", exceptionMetaData); } - final boolean success = this.dataSender.request(exceptionMetaData); + final boolean success = this.dataSender.send(exceptionMetaData); if (!success) { // Do not call exceptionMetaData.toString() logger.debug("send fail"); diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/ExceptionStorageFactory.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/ExceptionStorageFactory.java index dc1267a39716..cb4c7e21fce4 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/ExceptionStorageFactory.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/exception/storage/ExceptionStorageFactory.java @@ -15,8 +15,7 @@ */ package com.navercorp.pinpoint.profiler.context.exception.storage; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.context.exception.model.ExceptionMetaDataFactory; import com.navercorp.pinpoint.profiler.metadata.MetaDataType; @@ -27,10 +26,10 @@ */ public class ExceptionStorageFactory { - private final EnhancedDataSender dataSender; + private final DataSender dataSender; private final int bufferSize; - public ExceptionStorageFactory(EnhancedDataSender dataSender, int bufferSize) { + public ExceptionStorageFactory(DataSender dataSender, int bufferSize) { this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.bufferSize = bufferSize; } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/grpc/config/GrpcTransportConfig.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/grpc/config/GrpcTransportConfig.java index 9a6923c83023..fece58c8bad9 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/grpc/config/GrpcTransportConfig.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/grpc/config/GrpcTransportConfig.java @@ -21,6 +21,7 @@ import com.navercorp.pinpoint.common.config.Value; import com.navercorp.pinpoint.common.config.util.ValueAnnotationProcessor; import com.navercorp.pinpoint.common.config.util.spring.PropertyPlaceholderHelper; +import com.navercorp.pinpoint.common.util.ByteSizeUnit; import com.navercorp.pinpoint.grpc.client.config.ClientOption; import com.navercorp.pinpoint.grpc.client.config.SslOption; @@ -65,14 +66,15 @@ public class GrpcTransportConfig { public final static long DEFAULT_RENEW_TRANSPORT_PERIOD_MILLIS_DISABLE = 3153600000000L; private static final long DEFAULT_RENEW_TRANSPORT_PERIOD_MILLIS = DEFAULT_RENEW_TRANSPORT_PERIOD_MILLIS_DISABLE; // Disabled - private static final int DEFAULT_METADATA_RETRY_MAX_COUNT = 3; - private static final int DEFAULT_METADATA_RETRY_DELAY_MILLIS = 1000; - private static final boolean DEFAULT_METADATA_RETRY_ENABLE = false; private static final long DEFAULT_METADATA_RETRY_BUFFER_SIZE = 1L << 24; // 16M private static final long DEFAULT_METADATA_PER_RPC_BUFFER_LIMIT = 1L << 20; // 1M private static final int DEFAULT_METADATA_MAX_ATTEMPTS = 3; private static final long DEFAULT_METADATA_HEDGING_DELAY_MILLIS = 1000; + @Deprecated + private static final int DEFAULT_METADATA_RETRY_MAX_COUNT = -1; + @Deprecated + private static final int DEFAULT_METADATA_RETRY_DELAY_MILLIS = -1; public static final boolean DEFAULT_NETTY_SYSTEM_PROPERTY_TRY_REFLECTIVE_SET_ACCESSIBLE = true; @@ -112,21 +114,21 @@ public class GrpcTransportConfig { private int metadataSenderExecutorQueueSize = DEFAULT_METADATA_SENDER_EXECUTOR_QUEUE_SIZE; @Value("${profiler.transport.grpc.metadata.sender.channel.executor.queue.size}") private int metadataChannelExecutorQueueSize = DEFAULT_METADATA_CHANNEL_EXECUTOR_QUEUE_SIZE; - @Value("${profiler.transport.grpc.metadata.sender.retry.max.count}") - private int metadataRetryMaxCount = DEFAULT_METADATA_RETRY_MAX_COUNT; - @Value("${profiler.transport.grpc.metadata.sender.retry.delay.millis}") - private int metadataRetryDelayMillis = DEFAULT_METADATA_RETRY_DELAY_MILLIS; //grpc client retry @Value("${profiler.transport.grpc.metadata.sender.retry.enable}") private boolean metadataRetryEnable = DEFAULT_METADATA_RETRY_ENABLE; - @Value("${profiler.transport.grpc.metadata.sender.retry.buffer.size}") private long metadataRetryBufferSize = DEFAULT_METADATA_RETRY_BUFFER_SIZE; - @Value("${profiler.transport.grpc.metadata.sender.retry.per.rpc.buffer.limit}") private long metadataPerRpcBufferLimit = DEFAULT_METADATA_PER_RPC_BUFFER_LIMIT; @Value("${profiler.transport.grpc.metadata.sender.max.attempts}") private int metadataMaxAttempts = DEFAULT_METADATA_MAX_ATTEMPTS; @Value("${profiler.transport.grpc.metadata.sender.hedging.delay.millis}") private long metadataHedgingDelayMillis = DEFAULT_METADATA_HEDGING_DELAY_MILLIS; + @Deprecated + @Value("${profiler.transport.grpc.metadata.sender.retry.max.count}") + private int metadataRetryMaxCount = DEFAULT_METADATA_RETRY_MAX_COUNT; + @Deprecated + @Value("${profiler.transport.grpc.metadata.sender.retry.delay.millis}") + private int metadataRetryDelayMillis = DEFAULT_METADATA_RETRY_DELAY_MILLIS; @Value("${profiler.transport.grpc.stat.collector.ip}") private String statCollectorIp = DEFAULT_IP; @@ -418,6 +420,16 @@ public boolean isNettySystemPropertyTryReflectiveSetAccessible() { return nettySystemPropertyTryReflectiveSetAccessible; } + + @Value("${profiler.transport.grpc.metadata.sender.retry.buffer.size}") + void setMetadataRetryBufferSize(String metadataRetryBufferSize) { + this.metadataRetryBufferSize = ByteSizeUnit.getByteSize(metadataRetryBufferSize, DEFAULT_METADATA_RETRY_BUFFER_SIZE); + } + @Value("${profiler.transport.grpc.metadata.sender.retry.per.rpc.buffer.limit}") + void setMetadataPerRpcBufferLimit(String metadataPerRpcBufferLimit) { + this.metadataPerRpcBufferLimit = ByteSizeUnit.getByteSize(metadataPerRpcBufferLimit, DEFAULT_METADATA_PER_RPC_BUFFER_LIMIT); + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("GrpcTransportConfig{"); diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModule.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModule.java index dc4a999872f0..57ab671a0e2c 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModule.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModule.java @@ -177,7 +177,9 @@ private void bindAgentDataSender() { bind(agentDataSender).toProvider(AgentGrpcDataSenderProvider.class).in(Scopes.SINGLETON); expose(agentDataSender); - Key> metadataDataSender = Key.get(dataSenderTypeLiteral, MetadataDataSender.class); + TypeLiteral> metadataDataSenderTypeLiteral = new TypeLiteral>() { + }; + Key> metadataDataSender = Key.get(metadataDataSenderTypeLiteral, MetadataDataSender.class); bind(metadataDataSender).toProvider(MetadataGrpcDataSenderProvider.class).in(Scopes.SINGLETON); expose(metadataDataSender); } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModuleLifeCycle.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModuleLifeCycle.java index 2a8911518eff..a6c4905de8ed 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModuleLifeCycle.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModuleLifeCycle.java @@ -41,7 +41,7 @@ public class GrpcModuleLifeCycle implements ModuleLifeCycle { private final PluginLogger logger = PluginLogManager.getLogger(this.getClass()); private final Provider> agentDataSenderProvider; - private final Provider> metadataDataSenderProvider; + private final Provider> metadataDataSenderProvider; private final Provider> spanDataSenderProvider; private final Provider> statDataSenderProvider; @@ -49,7 +49,7 @@ public class GrpcModuleLifeCycle implements ModuleLifeCycle { private final Provider reconnectScheduledExecutorProvider; private EnhancedDataSender agentDataSender; - private EnhancedDataSender metadataDataSender; + private DataSender metadataDataSender; private DataSender spanDataSender; private DataSender statDataSender; @@ -62,7 +62,7 @@ public class GrpcModuleLifeCycle implements ModuleLifeCycle { @Inject public GrpcModuleLifeCycle( @AgentDataSender Provider> agentDataSenderProvider, - @MetadataDataSender Provider> metadataDataSenderProvider, + @MetadataDataSender Provider> metadataDataSenderProvider, @SpanDataSender Provider> spanDataSenderProvider, @StatDataSender Provider> statDataSenderProvider, Provider dnsExecutorServiceProvider, diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/exception/ExceptionStorageFactoryProvider.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/exception/ExceptionStorageFactoryProvider.java index ca5799ece228..46f7ade122c6 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/exception/ExceptionStorageFactoryProvider.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/exception/ExceptionStorageFactoryProvider.java @@ -17,8 +17,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.context.exception.storage.ExceptionStorageFactory; import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; import com.navercorp.pinpoint.profiler.context.monitor.config.ExceptionTraceConfig; @@ -32,12 +31,12 @@ public class ExceptionStorageFactoryProvider implements Provider { private final ExceptionTraceConfig exceptionTraceConfig; - private final EnhancedDataSender spanTypeDataSender; + private final DataSender spanTypeDataSender; @Inject public ExceptionStorageFactoryProvider( ExceptionTraceConfig exceptionTraceConfig, - @MetadataDataSender EnhancedDataSender metadataDataSender + @MetadataDataSender DataSender metadataDataSender ) { this.exceptionTraceConfig = Objects.requireNonNull(exceptionTraceConfig, "exceptionTraceConfig"); this.spanTypeDataSender = metadataDataSender; diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/grpc/MetadataGrpcDataSenderProvider.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/grpc/MetadataGrpcDataSenderProvider.java index 74eff80907ec..69d294650789 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/grpc/MetadataGrpcDataSenderProvider.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/grpc/MetadataGrpcDataSenderProvider.java @@ -19,7 +19,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.google.protobuf.GeneratedMessageV3; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.common.profiler.message.MessageConverter; import com.navercorp.pinpoint.grpc.client.ChannelFactory; import com.navercorp.pinpoint.grpc.client.ChannelFactoryBuilder; @@ -29,7 +29,6 @@ import com.navercorp.pinpoint.grpc.client.config.ClientOption; import com.navercorp.pinpoint.grpc.client.config.ClientRetryOption; import com.navercorp.pinpoint.grpc.client.retry.HedgingServiceConfigBuilder; -import com.navercorp.pinpoint.io.ResponseMessage; import com.navercorp.pinpoint.profiler.context.grpc.config.GrpcTransportConfig; import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; import com.navercorp.pinpoint.profiler.metadata.MetaDataType; @@ -46,7 +45,7 @@ /** * @author jaehong.kim */ -public class MetadataGrpcDataSenderProvider implements Provider> { +public class MetadataGrpcDataSenderProvider implements Provider> { private final Logger logger = LogManager.getLogger(this.getClass()); @@ -77,7 +76,7 @@ public void setClientInterceptor(@MetadataDataSender List cli } @Override - public EnhancedDataSender get() { + public DataSender get() { final String collectorIp = grpcTransportConfig.getMetadataCollectorIp(); final int collectorPort = grpcTransportConfig.getMetadataCollectorPort(); final boolean sslEnable = grpcTransportConfig.isMetadataSslEnable(); @@ -88,10 +87,7 @@ public EnhancedDataSender get() { final ChannelFactory channelFactory = channelFactoryBuilder.build(); - final int retryMaxCount = grpcTransportConfig.getMetadataRetryMaxCount(); - final int retryDelayMillis = grpcTransportConfig.getMetadataRetryDelayMillis(); - - return new MetadataGrpcDataSender<>(collectorIp, collectorPort, senderExecutorQueueSize, messageConverter, channelFactory, retryMaxCount, retryDelayMillis, clientRetryEnable); + return new MetadataGrpcDataSender(collectorIp, collectorPort, senderExecutorQueueSize, messageConverter, channelFactory); } protected ChannelFactoryBuilder newChannelFactoryBuilder(boolean sslEnable, boolean clientRetryEnable) { @@ -122,6 +118,10 @@ protected ChannelFactoryBuilder newChannelFactoryBuilder(boolean sslEnable, bool hedgingServiceConfigBuilder.setMaxAttempts(grpcTransportConfig.getMetadataMaxAttempts()); hedgingServiceConfigBuilder.setHedgingDelayMillis(grpcTransportConfig.getMetadataHedgingDelayMillis()); + //for compatibility + hedgingServiceConfigBuilder.setMaxCount(grpcTransportConfig.getMetadataRetryMaxCount()); + hedgingServiceConfigBuilder.setRetryDelayMillis(grpcTransportConfig.getMetadataRetryDelayMillis()); + channelFactoryBuilder.setClientRetryOption(new ClientRetryOption( grpcTransportConfig.getMetadataRetryBufferSize(), grpcTransportConfig.getMetadataPerRpcBufferLimit(), diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/ApiMetaDataServiceProvider.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/ApiMetaDataServiceProvider.java index a13a29e3c264..8b706b096126 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/ApiMetaDataServiceProvider.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/ApiMetaDataServiceProvider.java @@ -18,8 +18,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; import com.navercorp.pinpoint.profiler.metadata.ApiMetaDataService; @@ -33,20 +32,20 @@ */ public class ApiMetaDataServiceProvider implements Provider { - private final Provider> enhancedDataSenderProvider; + private final Provider> dataSenderProvider; private final SimpleCacheFactory simpleCacheFactory; @Inject - public ApiMetaDataServiceProvider(@MetadataDataSender Provider> enhancedDataSenderProvider, SimpleCacheFactory simpleCacheFactory) { - this.enhancedDataSenderProvider = Objects.requireNonNull(enhancedDataSenderProvider, "enhancedDataSenderProvider"); + public ApiMetaDataServiceProvider(@MetadataDataSender Provider> dataSenderProvider, SimpleCacheFactory simpleCacheFactory) { + this.dataSenderProvider = Objects.requireNonNull(dataSenderProvider, "dataSenderProvider"); this.simpleCacheFactory = Objects.requireNonNull(simpleCacheFactory, "simpleCacheFactory"); } @Override public ApiMetaDataService get() { - final EnhancedDataSender enhancedDataSender = this.enhancedDataSenderProvider.get(); + final DataSender dataSender = this.dataSenderProvider.get(); final SimpleCache simpleCache = simpleCacheFactory.newSimpleCache(); - return new DefaultApiMetaDataService(enhancedDataSender, simpleCache); + return new DefaultApiMetaDataService(dataSender, simpleCache); } } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/SqlMetadataServiceProvider.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/SqlMetadataServiceProvider.java index 44a2cfea6ca3..bff3091d9f72 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/SqlMetadataServiceProvider.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/SqlMetadataServiceProvider.java @@ -19,8 +19,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import com.navercorp.pinpoint.profiler.cache.UidCache; import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; @@ -42,17 +41,17 @@ public class SqlMetadataServiceProvider implements Provider { private final ProfilerConfig profilerConfig; private final MonitorConfig monitorConfig; - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; private final SimpleCacheFactory simpleCacheFactory; @Inject public SqlMetadataServiceProvider(ProfilerConfig profilerConfig, MonitorConfig monitorConfig, - @MetadataDataSender EnhancedDataSender enhancedDataSender, + @MetadataDataSender DataSender dataSender, SimpleCacheFactory simpleCacheFactory) { this.profilerConfig = Objects.requireNonNull(profilerConfig, "profilerConfig"); this.monitorConfig = Objects.requireNonNull(monitorConfig, "monitorConfig"); - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.simpleCacheFactory = Objects.requireNonNull(simpleCacheFactory, "simpleCacheFactory"); } @@ -63,12 +62,12 @@ public SqlMetaDataService get() { if (monitorConfig.isSqlStatEnable()) { final UidCache stringCache = new UidCache(jdbcSqlCacheSize); CachingSqlNormalizer> simpleCachingSqlNormalizer = new DefaultCachingSqlNormalizer<>(stringCache); - SqlCacheService sqlCacheService = new SqlCacheService<>(enhancedDataSender, simpleCachingSqlNormalizer); + SqlCacheService sqlCacheService = new SqlCacheService<>(dataSender, simpleCachingSqlNormalizer); return new SqlUidMetaDataService(sqlCacheService); } else { final SimpleCache stringCache = simpleCacheFactory.newSimpleCache(jdbcSqlCacheSize); CachingSqlNormalizer> simpleCachingSqlNormalizer = new DefaultCachingSqlNormalizer<>(stringCache); - SqlCacheService sqlCacheService = new SqlCacheService<>(enhancedDataSender, simpleCachingSqlNormalizer); + SqlCacheService sqlCacheService = new SqlCacheService<>(dataSender, simpleCachingSqlNormalizer); return new DefaultSqlMetaDataService(sqlCacheService); } } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/StringMetadataServiceProvider.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/StringMetadataServiceProvider.java index 97c070983a99..3abeb49c60f6 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/StringMetadataServiceProvider.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/metadata/StringMetadataServiceProvider.java @@ -18,8 +18,7 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import com.navercorp.pinpoint.profiler.context.module.MetadataDataSender; import com.navercorp.pinpoint.profiler.metadata.DefaultStringMetaDataService; @@ -34,18 +33,18 @@ */ public class StringMetadataServiceProvider implements Provider { - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; private final SimpleCacheFactory simpleCacheFactory; @Inject - public StringMetadataServiceProvider(@MetadataDataSender EnhancedDataSender enhancedDataSender, SimpleCacheFactory simpleCacheFactory) { - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + public StringMetadataServiceProvider(@MetadataDataSender DataSender dataSender, SimpleCacheFactory simpleCacheFactory) { + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.simpleCacheFactory = Objects.requireNonNull(simpleCacheFactory, "simpleCacheFactory"); } @Override public StringMetaDataService get() { final SimpleCache stringCache = simpleCacheFactory.newSimpleCache(); - return new DefaultStringMetaDataService(enhancedDataSender, stringCache); + return new DefaultStringMetaDataService(dataSender, stringCache); } } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataService.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataService.java index 9f88a57d766e..a093d406959a 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataService.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataService.java @@ -17,8 +17,7 @@ package com.navercorp.pinpoint.profiler.metadata; import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.Result; import com.navercorp.pinpoint.profiler.cache.SimpleCache; @@ -31,10 +30,10 @@ public class DefaultApiMetaDataService implements ApiMetaDataService { private final SimpleCache apiCache; - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; - public DefaultApiMetaDataService(EnhancedDataSender enhancedDataSender, SimpleCache apiCache) { - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + public DefaultApiMetaDataService(DataSender dataSender, SimpleCache apiCache) { + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.apiCache = Objects.requireNonNull(apiCache, "apiCache"); } @@ -51,7 +50,7 @@ public int cacheApi(final MethodDescriptor methodDescriptor) { methodDescriptor.getLineNumber(), methodDescriptor.getType()); - this.enhancedDataSender.request(apiMetadata); + this.dataSender.send(apiMetadata); } return result.getId(); diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataService.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataService.java index 93dc0c0e3875..1b22449d2a09 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataService.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataService.java @@ -16,8 +16,7 @@ package com.navercorp.pinpoint.profiler.metadata; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.Result; import com.navercorp.pinpoint.profiler.cache.SimpleCache; @@ -30,10 +29,10 @@ public class DefaultStringMetaDataService implements StringMetaDataService { private final SimpleCache stringCache; - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; - public DefaultStringMetaDataService(EnhancedDataSender enhancedDataSender, SimpleCache stringCache) { - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + public DefaultStringMetaDataService(DataSender dataSender, SimpleCache stringCache) { + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.stringCache = Objects.requireNonNull(stringCache, "stringCache"); } @@ -46,7 +45,7 @@ public int cacheString(final String value) { final Result result = this.stringCache.put(value); if (result.isNewValue()) { final StringMetaData stringMetaData = new StringMetaData(result.getId(), value); - this.enhancedDataSender.request(stringMetaData); + this.dataSender.send(stringMetaData); } return result.getId(); } diff --git a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheService.java b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheService.java index 5df535a4783d..23d001d5770c 100644 --- a/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheService.java +++ b/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheService.java @@ -1,7 +1,6 @@ package com.navercorp.pinpoint.profiler.metadata; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -14,10 +13,10 @@ public class SqlCacheService { private final CachingSqlNormalizer> cachingSqlNormalizer; - private final EnhancedDataSender enhancedDataSender; + private final DataSender dataSender; - public SqlCacheService(EnhancedDataSender enhancedDataSender, CachingSqlNormalizer> cachingSqlNormalizer) { - this.enhancedDataSender = Objects.requireNonNull(enhancedDataSender, "enhancedDataSender"); + public SqlCacheService(DataSender dataSender, CachingSqlNormalizer> cachingSqlNormalizer) { + this.dataSender = Objects.requireNonNull(dataSender, "dataSender"); this.cachingSqlNormalizer = Objects.requireNonNull(cachingSqlNormalizer, "cachingSqlNormalizer"); } @@ -38,7 +37,7 @@ public boolean cacheSql(ParsingResultInternal parsingResult, Function extends GrpcDataSender implements EnhancedDataSender { +public class MetadataGrpcDataSender extends GrpcDataSender { // private final MetadataGrpc.MetadataStub metadataStub; - private final int maxAttempts; - private final int retryDelayMillis; - private final boolean clientRetryEnable; - - private final Timer retryTimer; - private static final long MAX_PENDING_TIMEOUTS = 1024 * 4; - - private final RetryScheduler retryScheduler; public MetadataGrpcDataSender(String host, int port, int executorQueueSize, - MessageConverter messageConverter, - ChannelFactory channelFactory, int retryMaxCount, int retryDelayMillis, boolean clientRetryEnable) { + MessageConverter messageConverter, + ChannelFactory channelFactory) { super(host, port, executorQueueSize, messageConverter, channelFactory); - - this.maxAttempts = getMaxAttempts(retryMaxCount); - this.retryDelayMillis = retryDelayMillis; this.metadataStub = MetadataGrpc.newStub(managedChannel); - - this.retryTimer = newTimer("metadata-timer"); - - this.retryScheduler = new RetryScheduler() { - @Override - public boolean isSuccess(PResult response) { - return response.getSuccess(); - } - - @Override - public void scheduleNextRetry(GeneratedMessageV3 request, int remainingRetryCount) { - MetadataGrpcDataSender.this.scheduleNextRetry(request, remainingRetryCount); - } - }; - this.clientRetryEnable = clientRetryEnable; - } - - private int getMaxAttempts(int retryMaxCount) { - if (retryMaxCount < 0) { - return 0; - } - return retryMaxCount; } - private Timer newTimer(String name) { - ThreadFactory threadFactory = new PinpointThreadFactory(PinpointThreadFactory.DEFAULT_THREAD_NAME_PREFIX + name, true); - return new HashedWheelTimer(threadFactory, 100, TimeUnit.MILLISECONDS, 512, false, MAX_PENDING_TIMEOUTS); - } - - // Unsupported Operation - @Override - public boolean request(T data, int retry) { - throw new UnsupportedOperationException("unsupported operation request(data, retry)"); - } - @Override - public boolean request(T data, BiConsumer listener) { - throw new UnsupportedOperationException("unsupported operation request(data, listener)"); - } +// private Timer newTimer(String name) { +// ThreadFactory threadFactory = new PinpointThreadFactory(PinpointThreadFactory.DEFAULT_THREAD_NAME_PREFIX + name, true); +// return new HashedWheelTimer(threadFactory, 100, TimeUnit.MILLISECONDS, 512, false, MAX_PENDING_TIMEOUTS); +// } //send with retry @Override - public boolean send(T data) { + public boolean send(MetaDataType data) { try { final GeneratedMessageV3 message = messageConverter.toMessage(data); @@ -139,106 +85,10 @@ private StreamObserver newLogStreamObserver() { return new LogResponseStreamObserver<>(logger); } - @Override - public boolean request(final T data) { - if (clientRetryEnable) { - return this.send(data); - } - - final Runnable convertAndRun = new Runnable() { - @Override - public void run() { - try { - // Convert message - final GeneratedMessageV3 message = messageConverter.toMessage(data); - if (isDebug) { - logger.debug("Request metadata={}", MessageFormatUtils.debugLog(message)); - } - request0(message, maxAttempts); - } catch (Exception ex) { - logger.info("Failed to request metadata={}", data, ex); - } - } - }; - try { - executor.execute(convertAndRun); - } catch (RejectedExecutionException reject) { - logger.info("Rejected metadata={}", data); - return false; - } - return true; - } - - // Request - private void request0(final GeneratedMessageV3 message, final int remainingRetryCount) { - if (message instanceof PSqlMetaData) { - final PSqlMetaData sqlMetaData = (PSqlMetaData) message; - final StreamObserver responseObserver = newResponseStream(message, remainingRetryCount); - this.metadataStub.requestSqlMetaData(sqlMetaData, responseObserver); - } else if (message instanceof PSqlUidMetaData) { - final PSqlUidMetaData sqlUidMetaData = (PSqlUidMetaData) message; - final StreamObserver responseObserver = newResponseStream(message, remainingRetryCount); - this.metadataStub.requestSqlUidMetaData(sqlUidMetaData, responseObserver); - } else if (message instanceof PApiMetaData) { - final PApiMetaData apiMetaData = (PApiMetaData) message; - final StreamObserver responseObserver = newResponseStream(message, remainingRetryCount); - this.metadataStub.requestApiMetaData(apiMetaData, responseObserver); - } else if (message instanceof PStringMetaData) { - final PStringMetaData stringMetaData = (PStringMetaData) message; - final StreamObserver responseObserver = newResponseStream(message, remainingRetryCount); - this.metadataStub.requestStringMetaData(stringMetaData, responseObserver); - } else if (message instanceof PExceptionMetaData) { - final PExceptionMetaData exceptionMetaData = (PExceptionMetaData) message; - final StreamObserver responseObserver = newResponseStream(message, remainingRetryCount); - this.metadataStub.requestExceptionMetaData(exceptionMetaData, responseObserver); - } else { - logger.warn("Unsupported message {}", MessageFormatUtils.debugLog(message)); - } - } - - private StreamObserver newResponseStream(GeneratedMessageV3 message, int remainingRetryCount) { - return new RetryResponseStreamObserver<>(logger, retryScheduler, message, remainingRetryCount); - } - - // Retry - private void scheduleNextRetry(final GeneratedMessageV3 message, final int remainingRetryCount) { - if (shutdown) { - if (isDebug) { - logger.debug("Request drop. Already shutdown request={}", MessageFormatUtils.debugLog(message)); - } - return; - } - if (remainingRetryCount <= 0) { - if (isDebug) { - logger.debug("Request drop. remainingRetryCount={}, request={}", MessageFormatUtils.debugLog(message), remainingRetryCount); - } - return; - } - - if (isDebug) { - logger.debug("Request retry. request={}, remainingRetryCount={}", MessageFormatUtils.debugLog(message), remainingRetryCount); - } - final TimerTask timerTask = new TimerTask() { - @Override - public void run(Timeout timeout) throws Exception { - if (timeout.cancel()) { - return; - } - if (shutdown) { - return; - } - request0(message, remainingRetryCount); - } - }; - - try { - retryTimer.newTimeout(timerTask, retryDelayMillis, TimeUnit.MILLISECONDS); - } catch (RejectedExecutionException e) { - logger.debug("retry fail {}", e.getCause(), e); - } + public boolean request(final MetaDataType data) { + return this.send(data); } - @Override public void stop() { if (shutdown) { @@ -246,10 +96,6 @@ public void stop() { } this.shutdown = true; - final Timer retryTimer = this.retryTimer; - if (retryTimer != null) { - retryTimer.stop(); - } super.release(); } } \ No newline at end of file diff --git a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataServiceTest.java b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataServiceTest.java index 922b8d9afa0b..2ce40039e1d6 100644 --- a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataServiceTest.java +++ b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultApiMetaDataServiceTest.java @@ -17,8 +17,7 @@ package com.navercorp.pinpoint.profiler.metadata; import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.IdAllocator; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import com.navercorp.pinpoint.profiler.context.DefaultMethodDescriptor; @@ -36,7 +35,7 @@ public class DefaultApiMetaDataServiceTest { @Test public void cacheApi() { - EnhancedDataSender dataSender = mock(EnhancedDataSender.class); + DataSender dataSender = mock(DataSender.class); SimpleCache cache = new SimpleCache<>(new IdAllocator.ZigZagAllocator(1)); ApiMetaDataService apiMetaDataService = new DefaultApiMetaDataService(dataSender, cache); @@ -46,11 +45,11 @@ public void cacheApi() { int first = apiMetaDataService.cacheApi(methodDescriptor); Assertions.assertNotEquals(first, 0, "not exist"); - verify(dataSender).request(any(ApiMetaData.class)); + verify(dataSender).send(any(ApiMetaData.class)); int second = apiMetaDataService.cacheApi(methodDescriptor); Assertions.assertEquals(first, second, "check cache"); - verify(dataSender).request(any(ApiMetaData.class)); + verify(dataSender).send(any(ApiMetaData.class)); } } \ No newline at end of file diff --git a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataServiceTest.java b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataServiceTest.java index 06fa2e538645..0d36f448ba66 100644 --- a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataServiceTest.java +++ b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/DefaultStringMetaDataServiceTest.java @@ -16,8 +16,7 @@ package com.navercorp.pinpoint.profiler.metadata; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.IdAllocator; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import org.junit.jupiter.api.Assertions; @@ -34,7 +33,7 @@ public class DefaultStringMetaDataServiceTest { @Test public void cacheString() { - EnhancedDataSender dataSender = mock(EnhancedDataSender.class); + DataSender dataSender = mock(DataSender.class); SimpleCache stringCache = new SimpleCache<>(new IdAllocator.ZigZagAllocator()); StringMetaDataService stringMetaDataService = new DefaultStringMetaDataService(dataSender, stringCache); @@ -43,11 +42,11 @@ public void cacheString() { int first = stringMetaDataService.cacheString(str); Assertions.assertNotEquals(first, 0, "not exist"); - verify(dataSender).request(any(StringMetaData.class)); + verify(dataSender).send(any(StringMetaData.class)); int second = stringMetaDataService.cacheString(str); Assertions.assertEquals(first, second, "check cache"); - verify(dataSender).request(any(StringMetaData.class)); + verify(dataSender).send(any(StringMetaData.class)); } } \ No newline at end of file diff --git a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheServiceTest.java b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheServiceTest.java index a324acb77507..4140b089cff6 100644 --- a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheServiceTest.java +++ b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlCacheServiceTest.java @@ -16,8 +16,7 @@ package com.navercorp.pinpoint.profiler.metadata; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.IdAllocator; import com.navercorp.pinpoint.profiler.cache.SimpleCache; import org.junit.jupiter.api.Assertions; @@ -34,7 +33,7 @@ public class SqlCacheServiceTest { @Test public void cacheSql() { - final EnhancedDataSender dataSender = mock(EnhancedDataSender.class); + final DataSender dataSender = mock(DataSender.class); SimpleCache sqlCache = new SimpleCache<>(new IdAllocator.ZigZagAllocator(), 100); CachingSqlNormalizer> simpleCachingSqlNormalizer = new DefaultCachingSqlNormalizer<>(sqlCache); final SqlCacheService sqlMetaDataService = new SqlCacheService<>(dataSender, simpleCachingSqlNormalizer); @@ -45,10 +44,10 @@ public void cacheSql() { boolean newValue = sqlMetaDataService.cacheSql(parsingResult, DefaultSqlMetaDataService::newSqlMetaData); Assertions.assertTrue(newValue); - verify(dataSender).request(any(SqlMetaData.class)); + verify(dataSender).send(any(SqlMetaData.class)); boolean notNewValue = sqlMetaDataService.cacheSql(parsingResult, DefaultSqlMetaDataService::newSqlMetaData); Assertions.assertFalse(notNewValue); - verify(dataSender).request(any(SqlMetaData.class)); + verify(dataSender).send(any(SqlMetaData.class)); } } \ No newline at end of file diff --git a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlUidMetaDataServiceTest.java b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlUidMetaDataServiceTest.java index 7b83e52e2dc3..88a8b547ecbd 100644 --- a/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlUidMetaDataServiceTest.java +++ b/agent-module/profiler/src/test/java/com/navercorp/pinpoint/profiler/metadata/SqlUidMetaDataServiceTest.java @@ -1,7 +1,6 @@ package com.navercorp.pinpoint.profiler.metadata; -import com.navercorp.pinpoint.common.profiler.message.EnhancedDataSender; -import com.navercorp.pinpoint.io.ResponseMessage; +import com.navercorp.pinpoint.common.profiler.message.DataSender; import com.navercorp.pinpoint.profiler.cache.UidCache; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -23,7 +22,7 @@ public class SqlUidMetaDataServiceTest { private SqlUidMetaDataService sut; @Mock - private EnhancedDataSender dataSender; + private DataSender dataSender; AutoCloseable autoCloseable; @@ -56,7 +55,7 @@ public void sendDataOnce() { UidParsingResult parsingResult = (UidParsingResult) sut.wrapSqlResult(sql); assertTrue(sqlCacheService.cacheSql(parsingResult, SqlUidMetaDataService::newSqlUidMetaData)); - verify(dataSender).request(any(SqlUidMetaData.class)); + verify(dataSender).send(any(SqlUidMetaData.class)); assertFalse(sqlCacheService.cacheSql(parsingResult, SqlUidMetaDataService::newSqlUidMetaData)); verifyNoMoreInteractions(dataSender); @@ -73,7 +72,7 @@ public void sameSql() { assertFalse(sqlCacheService.cacheSql(parsingResult2, SqlUidMetaDataService::newSqlUidMetaData)); assertArrayEquals(parsingResult1.getId(), parsingResult2.getId()); - verify(dataSender, times(1)).request(any(SqlUidMetaData.class)); + verify(dataSender, times(1)).send(any(SqlUidMetaData.class)); } @Test @@ -88,7 +87,7 @@ public void sameSql_clearCache() { assertTrue(sqlCacheService.cacheSql(parsingResult2, SqlUidMetaDataService::newSqlUidMetaData)); assertArrayEquals(parsingResult1.getId(), parsingResult2.getId()); - verify(dataSender, times(2)).request(any(SqlUidMetaData.class)); + verify(dataSender, times(2)).send(any(SqlUidMetaData.class)); } @Test diff --git a/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/DefaultChannelFactory.java b/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/DefaultChannelFactory.java index 117c9cded1ea..2308b8263389 100644 --- a/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/DefaultChannelFactory.java +++ b/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/DefaultChannelFactory.java @@ -169,7 +169,6 @@ public ManagedChannel build(String channelName, String host, int port) { setupRetryOption(channelBuilder); } - channelBuilder.maxTraceEvents(clientOption.getMaxTraceEvent()); return channelBuilder.build(); diff --git a/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/retry/HedgingServiceConfigBuilder.java b/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/retry/HedgingServiceConfigBuilder.java index 4766e7212dd1..81395bd52254 100644 --- a/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/retry/HedgingServiceConfigBuilder.java +++ b/grpc/src/main/java/com/navercorp/pinpoint/grpc/client/retry/HedgingServiceConfigBuilder.java @@ -23,8 +23,8 @@ public class HedgingServiceConfigBuilder implements ServiceConfigBuilder { - public static final int DEFAULT_MAX_ATTEMPTS = 3; - public static final long DEFAULT_HEDGING_DELAY_MILLIS = 1000L; + private static final int DEFAULT_MAX_ATTEMPTS = 3; + private static final long DEFAULT_HEDGING_DELAY_MILLIS = 1000L; private double maxAttempts = DEFAULT_MAX_ATTEMPTS; //Required. Must be two or greater private String hedgingDelay = millisToString(DEFAULT_HEDGING_DELAY_MILLIS); //Required. Long decimal with "s" appended @@ -69,6 +69,19 @@ public void setNonFatalStatusCodes(List nonFatalStatusCodes) { this.nonFatalStatusCodes = nonFatalStatusCodes; } + // for compatibility + public void setMaxCount(int maxCount) { + if (maxCount != -1) { + setMaxAttempts(maxCount); + } + } + + public void setRetryDelayMillis(int retryDelayMillis) { + if (retryDelayMillis != -1) { + setHedgingDelayMillis(retryDelayMillis); + } + } + public String millisToString(long value) { return value / 1000.0 + "s"; }