From 7de58c25054b59859d34aca2d07eeb0f4cce1691 Mon Sep 17 00:00:00 2001 From: Xiaoguang Sun Date: Fri, 10 Dec 2021 03:53:39 +0800 Subject: [PATCH 1/2] cherry pick #379 to release-3.1 Signed-off-by: ti-srebot --- .../java/org/tikv/common/ConfigUtils.java | 15 +++ .../java/org/tikv/common/TiConfiguration.java | 95 +++++++++++++++++++ src/main/java/org/tikv/common/TiSession.java | 19 ++++ .../org/tikv/common/util/ChannelFactory.java | 67 +++++++++++++ .../org/tikv/common/TiConfigurationTest.java | 20 ++++ 5 files changed, 216 insertions(+) diff --git a/src/main/java/org/tikv/common/ConfigUtils.java b/src/main/java/org/tikv/common/ConfigUtils.java index 72e5d756d5c..d7d535a0c66 100644 --- a/src/main/java/org/tikv/common/ConfigUtils.java +++ b/src/main/java/org/tikv/common/ConfigUtils.java @@ -27,6 +27,12 @@ public class ConfigUtils { public static final String TIKV_GRPC_SCAN_TIMEOUT = "tikv.grpc.scan_timeout_in_ms"; public static final String TIKV_GRPC_SCAN_BATCH_SIZE = "tikv.grpc.scan_batch_size"; public static final String TIKV_GRPC_MAX_FRAME_SIZE = "tikv.grpc.max_frame_size"; +<<<<<<< HEAD +======= + public static final String TIKV_GRPC_KEEPALIVE_TIME = "tikv.grpc.keepalive_time"; + public static final String TIKV_GRPC_KEEPALIVE_TIMEOUT = "tikv.grpc.keepalive_timeout"; + public static final String TIKV_GRPC_IDLE_TIMEOUT = "tikv.grpc.idle_timeout"; +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) public static final String TIKV_INDEX_SCAN_BATCH_SIZE = "tikv.index.scan_batch_size"; public static final String TIKV_INDEX_SCAN_CONCURRENCY = "tikv.index.scan_concurrency"; @@ -146,6 +152,15 @@ public class ConfigUtils { public static final String FOLLOWER = "FOLLOWER"; public static final String LEADER_AND_FOLLOWER = "LEADER_AND_FOLLOWER"; +<<<<<<< HEAD +======= + public static final int DEF_TIKV_GRPC_KEEPALIVE_TIME = 10; + public static final int DEF_TIKV_GRPC_KEEPALIVE_TIMEOUT = 3; + public static final int DEF_TIKV_GRPC_IDLE_TIMEOUT = 60; + public static final boolean DEF_TIKV_TLS_ENABLE = false; + public static final boolean DEF_TIFLASH_ENABLE = false; + +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) public static final boolean DEF_TiKV_CIRCUIT_BREAK_ENABLE = false; public static final int DEF_TiKV_CIRCUIT_BREAK_AVAILABILITY_WINDOW_IN_SECONDS = 60; public static final int DEF_TiKV_CIRCUIT_BREAK_AVAILABILITY_ERROR_THRESHOLD_PERCENTAGE = 100; diff --git a/src/main/java/org/tikv/common/TiConfiguration.java b/src/main/java/org/tikv/common/TiConfiguration.java index 760266d7500..fc1cc95a10b 100644 --- a/src/main/java/org/tikv/common/TiConfiguration.java +++ b/src/main/java/org/tikv/common/TiConfiguration.java @@ -112,6 +112,14 @@ private static void loadFromDefaultProperties() { setIfMissing(TIKV_GRPC_HEALTH_CHECK_TIMEOUT, DEF_CHECK_HEALTH_TIMEOUT); setIfMissing(TIKV_HEALTH_CHECK_PERIOD_DURATION, DEF_HEALTH_CHECK_PERIOD_DURATION); setIfMissing(TIKV_RAWKV_DEFAULT_BACKOFF_IN_MS, DEF_TIKV_RAWKV_DEFAULT_BACKOFF_IN_MS); +<<<<<<< HEAD +======= + setIfMissing(TIKV_GRPC_KEEPALIVE_TIME, DEF_TIKV_GRPC_KEEPALIVE_TIME); + setIfMissing(TIKV_GRPC_KEEPALIVE_TIMEOUT, DEF_TIKV_GRPC_KEEPALIVE_TIMEOUT); + setIfMissing(TIKV_GRPC_IDLE_TIMEOUT, DEF_TIKV_GRPC_IDLE_TIMEOUT); + setIfMissing(TIKV_TLS_ENABLE, DEF_TIKV_TLS_ENABLE); + setIfMissing(TIFLASH_ENABLE, DEF_TIFLASH_ENABLE); +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) setIfMissing(TIKV_RAWKV_READ_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_READ_TIMEOUT_IN_MS); setIfMissing(TIKV_RAWKV_WRITE_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_WRITE_TIMEOUT_IN_MS); setIfMissing(TIKV_RAWKV_BATCH_READ_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_BATCH_READ_TIMEOUT_IN_MS); @@ -342,6 +350,22 @@ private static ReplicaRead getReplicaRead(String key) { getIntOption(TIKV_RAWKV_BATCH_WRITE_SLOWLOG_IN_MS); private int rawKVScanSlowLogInMS = getInt(TIKV_RAWKV_SCAN_SLOWLOG_IN_MS); +<<<<<<< HEAD +======= + private boolean tlsEnable = getBoolean(TIKV_TLS_ENABLE); + private String trustCertCollectionFile = getOption(TIKV_TRUST_CERT_COLLECTION).orElse(null); + private String keyCertChainFile = getOption(TIKV_KEY_CERT_CHAIN).orElse(null); + private String keyFile = getOption(TIKV_KEY_FILE).orElse(null); + + private boolean tiFlashEnable = getBoolean(TIFLASH_ENABLE); + + private boolean isTest = false; + + private int keepaliveTime = getInt(TIKV_GRPC_KEEPALIVE_TIME); + private int keepaliveTimeout = getInt(TIKV_GRPC_KEEPALIVE_TIMEOUT); + private int idleTimeout = getInt(TIKV_GRPC_IDLE_TIMEOUT); + +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) private boolean circuitBreakEnable = getBoolean(TiKV_CIRCUIT_BREAK_ENABLE); private int circuitBreakAvailabilityWindowInSeconds = getInt(TiKV_CIRCUIT_BREAK_AVAILABILITY_WINDOW_IN_SECONDS); @@ -666,6 +690,77 @@ public void setRawKVDefaultBackoffInMS(int rawKVDefaultBackoffInMS) { this.rawKVDefaultBackoffInMS = rawKVDefaultBackoffInMS; } +<<<<<<< HEAD +======= + public boolean isTest() { + return isTest; + } + + public void setTest(boolean test) { + isTest = test; + } + + public int getKeepaliveTime() { + return keepaliveTime; + } + + public void setKeepaliveTime(int keepaliveTime) { + this.keepaliveTime = keepaliveTime; + } + + public int getKeepaliveTimeout() { + return keepaliveTimeout; + } + + public void setKeepaliveTimeout(int timeout) { + this.keepaliveTimeout = timeout; + } + + public int getIdleTimeout() { + return idleTimeout; + } + + public void setIdleTimeout(int timeout) { + this.idleTimeout = timeout; + } + + public boolean isTiFlashEnabled() { + return tiFlashEnable; + } + + public boolean isTlsEnable() { + return tlsEnable; + } + + public void setTlsEnable(boolean tlsEnable) { + this.tlsEnable = tlsEnable; + } + + public String getTrustCertCollectionFile() { + return trustCertCollectionFile; + } + + public void setTrustCertCollectionFile(String trustCertCollectionFile) { + this.trustCertCollectionFile = trustCertCollectionFile; + } + + public String getKeyCertChainFile() { + return keyCertChainFile; + } + + public void setKeyCertChainFile(String keyCertChainFile) { + this.keyCertChainFile = keyCertChainFile; + } + + public String getKeyFile() { + return keyFile; + } + + public void setKeyFile(String keyFile) { + this.keyFile = keyFile; + } + +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) public int getRawKVReadTimeoutInMS() { return rawKVReadTimeoutInMS; } diff --git a/src/main/java/org/tikv/common/TiSession.java b/src/main/java/org/tikv/common/TiSession.java index df17109c3d5..9a16b062118 100644 --- a/src/main/java/org/tikv/common/TiSession.java +++ b/src/main/java/org/tikv/common/TiSession.java @@ -77,7 +77,26 @@ public TiSession(TiConfiguration conf) { this.metricsServer = MetricsServer.getInstance(conf); this.conf = conf; +<<<<<<< HEAD this.channelFactory = new ChannelFactory(conf.getMaxFrameSize()); +======= + this.channelFactory = + conf.isTlsEnable() + ? new ChannelFactory( + conf.getMaxFrameSize(), + conf.getKeepaliveTime(), + conf.getKeepaliveTimeout(), + conf.getIdleTimeout(), + conf.getTrustCertCollectionFile(), + conf.getKeyCertChainFile(), + conf.getKeyFile()) + : new ChannelFactory( + conf.getMaxFrameSize(), + conf.getKeepaliveTime(), + conf.getKeepaliveTimeout(), + conf.getIdleTimeout()); + +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) this.client = PDClient.createRaw(conf, channelFactory); this.enableGrpcForward = conf.getEnableGrpcForward(); if (this.enableGrpcForward) { diff --git a/src/main/java/org/tikv/common/util/ChannelFactory.java b/src/main/java/org/tikv/common/util/ChannelFactory.java index f6767d7e602..50c35161eda 100644 --- a/src/main/java/org/tikv/common/util/ChannelFactory.java +++ b/src/main/java/org/tikv/common/util/ChannelFactory.java @@ -25,10 +25,54 @@ public class ChannelFactory implements AutoCloseable { private final int maxFrameSize; +<<<<<<< HEAD private final ConcurrentHashMap connPool = new ConcurrentHashMap<>(); public ChannelFactory(int maxFrameSize) { this.maxFrameSize = maxFrameSize; +======= + private final int keepaliveTime; + private final int keepaliveTimeout; + private final int idleTimeout; + private final ConcurrentHashMap connPool = new ConcurrentHashMap<>(); + private final SslContextBuilder sslContextBuilder; + + public ChannelFactory( + int maxFrameSize, int keepaliveTime, int keepaliveTimeout, int idleTimeout) { + this.maxFrameSize = maxFrameSize; + this.keepaliveTime = keepaliveTime; + this.keepaliveTimeout = keepaliveTimeout; + this.idleTimeout = idleTimeout; + this.sslContextBuilder = null; + } + + public ChannelFactory( + int maxFrameSize, + int keepaliveTime, + int keepaliveTimeout, + int idleTimeout, + String trustCertCollectionFilePath, + String keyCertChainFilePath, + String keyFilePath) { + this.maxFrameSize = maxFrameSize; + this.keepaliveTime = keepaliveTime; + this.keepaliveTimeout = keepaliveTimeout; + this.idleTimeout = idleTimeout; + this.sslContextBuilder = + getSslContextBuilder(trustCertCollectionFilePath, keyCertChainFilePath, keyFilePath); + } + + private SslContextBuilder getSslContextBuilder( + String trustCertCollectionFilePath, String keyCertChainFilePath, String keyFilePath) { + SslContextBuilder builder = GrpcSslContexts.forClient(); + if (trustCertCollectionFilePath != null) { + builder.trustManager(new File(trustCertCollectionFilePath)); + } + if (keyCertChainFilePath != null && keyFilePath != null) { + builder.keyManager(new File(keyCertChainFilePath), new File(keyFilePath)); + } + return builder; +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) } public ManagedChannel getChannel(String addressStr, HostMapping hostMapping) { @@ -49,11 +93,34 @@ public ManagedChannel getChannel(String addressStr, HostMapping hostMapping) { } // Channel should be lazy without actual connection until first call // So a coarse grain lock is ok here +<<<<<<< HEAD return ManagedChannelBuilder.forAddress(mappedAddr.getHost(), mappedAddr.getPort()) .maxInboundMessageSize(maxFrameSize) .usePlaintext() .idleTimeout(60, TimeUnit.SECONDS) .build(); +======= + NettyChannelBuilder builder = + NettyChannelBuilder.forAddress(mappedAddr.getHost(), mappedAddr.getPort()) + .maxInboundMessageSize(maxFrameSize) + .keepAliveTime(keepaliveTime, TimeUnit.SECONDS) + .keepAliveTimeout(keepaliveTimeout, TimeUnit.SECONDS) + .keepAliveWithoutCalls(true) + .idleTimeout(idleTimeout, TimeUnit.SECONDS); + + if (sslContextBuilder == null) { + return builder.usePlaintext().build(); + } else { + SslContext sslContext = null; + try { + sslContext = sslContextBuilder.build(); + } catch (SSLException e) { + logger.error("create ssl context failed!", e); + return null; + } + return builder.sslContext(sslContext).build(); + } +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) }); } diff --git a/src/test/java/org/tikv/common/TiConfigurationTest.java b/src/test/java/org/tikv/common/TiConfigurationTest.java index 64512ba1e9d..da4419fea36 100644 --- a/src/test/java/org/tikv/common/TiConfigurationTest.java +++ b/src/test/java/org/tikv/common/TiConfigurationTest.java @@ -26,4 +26,24 @@ public void configFileTest() { TiConfiguration conf = TiConfiguration.createRawDefault(); assertEquals("configFileTest", conf.getDBPrefix()); } +<<<<<<< HEAD +======= + + @Test + public void tiFlashDefaultValueTest() { + TiConfiguration conf = TiConfiguration.createRawDefault(); + assertFalse(conf.isTiFlashEnabled()); + } + + @Test + public void testGrpcIdleTimeoutValue() { + TiConfiguration conf = TiConfiguration.createDefault(); + // default value + assertEquals(TiConfiguration.getInt(ConfigUtils.TIKV_GRPC_IDLE_TIMEOUT), conf.getIdleTimeout()); + // new value + int newValue = 100000; + conf.setIdleTimeout(newValue); + assertEquals(newValue, conf.getIdleTimeout()); + } +>>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) } From abe508fbe1eabfbabd2975011d8e31e015e92635 Mon Sep 17 00:00:00 2001 From: marsishandsome Date: Fri, 10 Dec 2021 04:03:09 +0800 Subject: [PATCH 2/2] fix conflicts Signed-off-by: marsishandsome --- .../java/org/tikv/common/ConfigUtils.java | 14 +-- .../java/org/tikv/common/TiConfiguration.java | 86 ------------------- src/main/java/org/tikv/common/TiSession.java | 21 +---- .../org/tikv/common/util/ChannelFactory.java | 69 +-------------- .../org/tikv/common/TiConfigurationTest.java | 9 -- 5 files changed, 4 insertions(+), 195 deletions(-) diff --git a/src/main/java/org/tikv/common/ConfigUtils.java b/src/main/java/org/tikv/common/ConfigUtils.java index d7d535a0c66..507db0228b4 100644 --- a/src/main/java/org/tikv/common/ConfigUtils.java +++ b/src/main/java/org/tikv/common/ConfigUtils.java @@ -27,13 +27,8 @@ public class ConfigUtils { public static final String TIKV_GRPC_SCAN_TIMEOUT = "tikv.grpc.scan_timeout_in_ms"; public static final String TIKV_GRPC_SCAN_BATCH_SIZE = "tikv.grpc.scan_batch_size"; public static final String TIKV_GRPC_MAX_FRAME_SIZE = "tikv.grpc.max_frame_size"; -<<<<<<< HEAD -======= - public static final String TIKV_GRPC_KEEPALIVE_TIME = "tikv.grpc.keepalive_time"; - public static final String TIKV_GRPC_KEEPALIVE_TIMEOUT = "tikv.grpc.keepalive_timeout"; public static final String TIKV_GRPC_IDLE_TIMEOUT = "tikv.grpc.idle_timeout"; ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) - + public static final String TIKV_INDEX_SCAN_BATCH_SIZE = "tikv.index.scan_batch_size"; public static final String TIKV_INDEX_SCAN_CONCURRENCY = "tikv.index.scan_concurrency"; public static final String TIKV_TABLE_SCAN_CONCURRENCY = "tikv.table.scan_concurrency"; @@ -152,15 +147,8 @@ public class ConfigUtils { public static final String FOLLOWER = "FOLLOWER"; public static final String LEADER_AND_FOLLOWER = "LEADER_AND_FOLLOWER"; -<<<<<<< HEAD -======= - public static final int DEF_TIKV_GRPC_KEEPALIVE_TIME = 10; - public static final int DEF_TIKV_GRPC_KEEPALIVE_TIMEOUT = 3; public static final int DEF_TIKV_GRPC_IDLE_TIMEOUT = 60; - public static final boolean DEF_TIKV_TLS_ENABLE = false; - public static final boolean DEF_TIFLASH_ENABLE = false; ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) public static final boolean DEF_TiKV_CIRCUIT_BREAK_ENABLE = false; public static final int DEF_TiKV_CIRCUIT_BREAK_AVAILABILITY_WINDOW_IN_SECONDS = 60; public static final int DEF_TiKV_CIRCUIT_BREAK_AVAILABILITY_ERROR_THRESHOLD_PERCENTAGE = 100; diff --git a/src/main/java/org/tikv/common/TiConfiguration.java b/src/main/java/org/tikv/common/TiConfiguration.java index fc1cc95a10b..6f55ec29b9a 100644 --- a/src/main/java/org/tikv/common/TiConfiguration.java +++ b/src/main/java/org/tikv/common/TiConfiguration.java @@ -112,14 +112,7 @@ private static void loadFromDefaultProperties() { setIfMissing(TIKV_GRPC_HEALTH_CHECK_TIMEOUT, DEF_CHECK_HEALTH_TIMEOUT); setIfMissing(TIKV_HEALTH_CHECK_PERIOD_DURATION, DEF_HEALTH_CHECK_PERIOD_DURATION); setIfMissing(TIKV_RAWKV_DEFAULT_BACKOFF_IN_MS, DEF_TIKV_RAWKV_DEFAULT_BACKOFF_IN_MS); -<<<<<<< HEAD -======= - setIfMissing(TIKV_GRPC_KEEPALIVE_TIME, DEF_TIKV_GRPC_KEEPALIVE_TIME); - setIfMissing(TIKV_GRPC_KEEPALIVE_TIMEOUT, DEF_TIKV_GRPC_KEEPALIVE_TIMEOUT); setIfMissing(TIKV_GRPC_IDLE_TIMEOUT, DEF_TIKV_GRPC_IDLE_TIMEOUT); - setIfMissing(TIKV_TLS_ENABLE, DEF_TIKV_TLS_ENABLE); - setIfMissing(TIFLASH_ENABLE, DEF_TIFLASH_ENABLE); ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) setIfMissing(TIKV_RAWKV_READ_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_READ_TIMEOUT_IN_MS); setIfMissing(TIKV_RAWKV_WRITE_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_WRITE_TIMEOUT_IN_MS); setIfMissing(TIKV_RAWKV_BATCH_READ_TIMEOUT_IN_MS, DEF_TIKV_RAWKV_BATCH_READ_TIMEOUT_IN_MS); @@ -349,23 +342,7 @@ private static ReplicaRead getReplicaRead(String key) { private Optional rawKVBatchWriteSlowLogInMS = getIntOption(TIKV_RAWKV_BATCH_WRITE_SLOWLOG_IN_MS); private int rawKVScanSlowLogInMS = getInt(TIKV_RAWKV_SCAN_SLOWLOG_IN_MS); - -<<<<<<< HEAD -======= - private boolean tlsEnable = getBoolean(TIKV_TLS_ENABLE); - private String trustCertCollectionFile = getOption(TIKV_TRUST_CERT_COLLECTION).orElse(null); - private String keyCertChainFile = getOption(TIKV_KEY_CERT_CHAIN).orElse(null); - private String keyFile = getOption(TIKV_KEY_FILE).orElse(null); - - private boolean tiFlashEnable = getBoolean(TIFLASH_ENABLE); - - private boolean isTest = false; - - private int keepaliveTime = getInt(TIKV_GRPC_KEEPALIVE_TIME); - private int keepaliveTimeout = getInt(TIKV_GRPC_KEEPALIVE_TIMEOUT); private int idleTimeout = getInt(TIKV_GRPC_IDLE_TIMEOUT); - ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) private boolean circuitBreakEnable = getBoolean(TiKV_CIRCUIT_BREAK_ENABLE); private int circuitBreakAvailabilityWindowInSeconds = getInt(TiKV_CIRCUIT_BREAK_AVAILABILITY_WINDOW_IN_SECONDS); @@ -690,32 +667,6 @@ public void setRawKVDefaultBackoffInMS(int rawKVDefaultBackoffInMS) { this.rawKVDefaultBackoffInMS = rawKVDefaultBackoffInMS; } -<<<<<<< HEAD -======= - public boolean isTest() { - return isTest; - } - - public void setTest(boolean test) { - isTest = test; - } - - public int getKeepaliveTime() { - return keepaliveTime; - } - - public void setKeepaliveTime(int keepaliveTime) { - this.keepaliveTime = keepaliveTime; - } - - public int getKeepaliveTimeout() { - return keepaliveTimeout; - } - - public void setKeepaliveTimeout(int timeout) { - this.keepaliveTimeout = timeout; - } - public int getIdleTimeout() { return idleTimeout; } @@ -724,43 +675,6 @@ public void setIdleTimeout(int timeout) { this.idleTimeout = timeout; } - public boolean isTiFlashEnabled() { - return tiFlashEnable; - } - - public boolean isTlsEnable() { - return tlsEnable; - } - - public void setTlsEnable(boolean tlsEnable) { - this.tlsEnable = tlsEnable; - } - - public String getTrustCertCollectionFile() { - return trustCertCollectionFile; - } - - public void setTrustCertCollectionFile(String trustCertCollectionFile) { - this.trustCertCollectionFile = trustCertCollectionFile; - } - - public String getKeyCertChainFile() { - return keyCertChainFile; - } - - public void setKeyCertChainFile(String keyCertChainFile) { - this.keyCertChainFile = keyCertChainFile; - } - - public String getKeyFile() { - return keyFile; - } - - public void setKeyFile(String keyFile) { - this.keyFile = keyFile; - } - ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) public int getRawKVReadTimeoutInMS() { return rawKVReadTimeoutInMS; } diff --git a/src/main/java/org/tikv/common/TiSession.java b/src/main/java/org/tikv/common/TiSession.java index 9a16b062118..80ea650c03a 100644 --- a/src/main/java/org/tikv/common/TiSession.java +++ b/src/main/java/org/tikv/common/TiSession.java @@ -77,26 +77,7 @@ public TiSession(TiConfiguration conf) { this.metricsServer = MetricsServer.getInstance(conf); this.conf = conf; -<<<<<<< HEAD - this.channelFactory = new ChannelFactory(conf.getMaxFrameSize()); -======= - this.channelFactory = - conf.isTlsEnable() - ? new ChannelFactory( - conf.getMaxFrameSize(), - conf.getKeepaliveTime(), - conf.getKeepaliveTimeout(), - conf.getIdleTimeout(), - conf.getTrustCertCollectionFile(), - conf.getKeyCertChainFile(), - conf.getKeyFile()) - : new ChannelFactory( - conf.getMaxFrameSize(), - conf.getKeepaliveTime(), - conf.getKeepaliveTimeout(), - conf.getIdleTimeout()); - ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) + this.channelFactory = new ChannelFactory(conf.getMaxFrameSize(), conf.getIdleTimeout()); this.client = PDClient.createRaw(conf, channelFactory); this.enableGrpcForward = conf.getEnableGrpcForward(); if (this.enableGrpcForward) { diff --git a/src/main/java/org/tikv/common/util/ChannelFactory.java b/src/main/java/org/tikv/common/util/ChannelFactory.java index 50c35161eda..63da5be549d 100644 --- a/src/main/java/org/tikv/common/util/ChannelFactory.java +++ b/src/main/java/org/tikv/common/util/ChannelFactory.java @@ -25,54 +25,12 @@ public class ChannelFactory implements AutoCloseable { private final int maxFrameSize; -<<<<<<< HEAD - private final ConcurrentHashMap connPool = new ConcurrentHashMap<>(); - - public ChannelFactory(int maxFrameSize) { - this.maxFrameSize = maxFrameSize; -======= - private final int keepaliveTime; - private final int keepaliveTimeout; private final int idleTimeout; private final ConcurrentHashMap connPool = new ConcurrentHashMap<>(); - private final SslContextBuilder sslContextBuilder; - - public ChannelFactory( - int maxFrameSize, int keepaliveTime, int keepaliveTimeout, int idleTimeout) { - this.maxFrameSize = maxFrameSize; - this.keepaliveTime = keepaliveTime; - this.keepaliveTimeout = keepaliveTimeout; - this.idleTimeout = idleTimeout; - this.sslContextBuilder = null; - } - public ChannelFactory( - int maxFrameSize, - int keepaliveTime, - int keepaliveTimeout, - int idleTimeout, - String trustCertCollectionFilePath, - String keyCertChainFilePath, - String keyFilePath) { + public ChannelFactory(int maxFrameSize, int idleTimeout) { this.maxFrameSize = maxFrameSize; - this.keepaliveTime = keepaliveTime; - this.keepaliveTimeout = keepaliveTimeout; this.idleTimeout = idleTimeout; - this.sslContextBuilder = - getSslContextBuilder(trustCertCollectionFilePath, keyCertChainFilePath, keyFilePath); - } - - private SslContextBuilder getSslContextBuilder( - String trustCertCollectionFilePath, String keyCertChainFilePath, String keyFilePath) { - SslContextBuilder builder = GrpcSslContexts.forClient(); - if (trustCertCollectionFilePath != null) { - builder.trustManager(new File(trustCertCollectionFilePath)); - } - if (keyCertChainFilePath != null && keyFilePath != null) { - builder.keyManager(new File(keyCertChainFilePath), new File(keyFilePath)); - } - return builder; ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) } public ManagedChannel getChannel(String addressStr, HostMapping hostMapping) { @@ -93,34 +51,11 @@ public ManagedChannel getChannel(String addressStr, HostMapping hostMapping) { } // Channel should be lazy without actual connection until first call // So a coarse grain lock is ok here -<<<<<<< HEAD return ManagedChannelBuilder.forAddress(mappedAddr.getHost(), mappedAddr.getPort()) .maxInboundMessageSize(maxFrameSize) .usePlaintext() - .idleTimeout(60, TimeUnit.SECONDS) + .idleTimeout(idleTimeout, TimeUnit.SECONDS) .build(); -======= - NettyChannelBuilder builder = - NettyChannelBuilder.forAddress(mappedAddr.getHost(), mappedAddr.getPort()) - .maxInboundMessageSize(maxFrameSize) - .keepAliveTime(keepaliveTime, TimeUnit.SECONDS) - .keepAliveTimeout(keepaliveTimeout, TimeUnit.SECONDS) - .keepAliveWithoutCalls(true) - .idleTimeout(idleTimeout, TimeUnit.SECONDS); - - if (sslContextBuilder == null) { - return builder.usePlaintext().build(); - } else { - SslContext sslContext = null; - try { - sslContext = sslContextBuilder.build(); - } catch (SSLException e) { - logger.error("create ssl context failed!", e); - return null; - } - return builder.sslContext(sslContext).build(); - } ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) }); } diff --git a/src/test/java/org/tikv/common/TiConfigurationTest.java b/src/test/java/org/tikv/common/TiConfigurationTest.java index da4419fea36..378c73ce3b3 100644 --- a/src/test/java/org/tikv/common/TiConfigurationTest.java +++ b/src/test/java/org/tikv/common/TiConfigurationTest.java @@ -26,14 +26,6 @@ public void configFileTest() { TiConfiguration conf = TiConfiguration.createRawDefault(); assertEquals("configFileTest", conf.getDBPrefix()); } -<<<<<<< HEAD -======= - - @Test - public void tiFlashDefaultValueTest() { - TiConfiguration conf = TiConfiguration.createRawDefault(); - assertFalse(conf.isTiFlashEnabled()); - } @Test public void testGrpcIdleTimeoutValue() { @@ -45,5 +37,4 @@ public void testGrpcIdleTimeoutValue() { conf.setIdleTimeout(newValue); assertEquals(newValue, conf.getIdleTimeout()); } ->>>>>>> d8841e7... [close #380] make gRPC idle timeout configurable (#379) }