cherry pick #297 to release-3.1 (#298)

Signed-off-by: ti-srebot <ti-srebot@pingcap.com>

Co-authored-by: Liangliang Gu <marsishandsome@gmail.com>
This commit is contained in:
ti-srebot 2021-10-27 20:16:28 +08:00 committed by GitHub
parent 52a101f2e2
commit b697cef74c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 27 deletions

View File

@ -86,21 +86,6 @@ public class Main {
The following includes JVM related parameters.
#### tikv.configuration_file
- tikv java client configuration file
- default: null
This parameter can be passed by `-Dtikv.configuration_file=/path/to/tikv_client_config.properties`.
Here is an example of `tikv_client_config.properties`.
```
tikv.grpc.timeout_in_ms=150ms
tikv.grpc.forward_timeout_in_ms=200ms
tikv.metrics.enable=true
tikv.metrics.port=3140
```
#### tikv.pd.addresses
- pd addresses, separated by comma
- default: 127.0.0.1:2379

View File

@ -19,7 +19,7 @@ import org.tikv.common.util.BackOffer;
import org.tikv.kvproto.Kvrpcpb;
public class ConfigUtils {
public static final String TIKV_CONFIGURATION_FILE = "tikv.configuration_file";
public static final String TIKV_CONFIGURATION_FILENAME = "tikv.properties";
public static final String TIKV_PD_ADDRESSES = "tikv.pd.addresses";
public static final String TIKV_GRPC_TIMEOUT = "tikv.grpc.timeout_in_ms";

View File

@ -18,8 +18,8 @@ package org.tikv.common;
import static org.tikv.common.ConfigUtils.*;
import io.grpc.Metadata;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URI;
import java.util.*;
@ -57,20 +57,27 @@ public class TiConfiguration implements Serializable {
}
private static void loadFromConfigurationFile() {
Optional<String> file = getOption(TIKV_CONFIGURATION_FILE);
if (file.isPresent()) {
try (InputStream input =
TiConfiguration.class
.getClassLoader()
.getResourceAsStream(ConfigUtils.TIKV_CONFIGURATION_FILENAME)) {
Properties properties = new Properties();
try {
properties.load(new FileInputStream(file.get()));
} catch (IOException e) {
logger.error("load config file error, path = " + file.get(), e);
if (input == null) {
logger.warn("Unable to find " + ConfigUtils.TIKV_CONFIGURATION_FILENAME);
return;
}
logger.info("loading " + ConfigUtils.TIKV_CONFIGURATION_FILENAME);
properties.load(input);
for (String key : properties.stringPropertyNames()) {
if (key.startsWith("tikv.")) {
String value = properties.getProperty(key);
setIfMissing(key, value);
}
}
} catch (IOException e) {
logger.error("load config file error", e);
}
}
@ -114,7 +121,7 @@ public class TiConfiguration implements Serializable {
}
public static void listAll() {
logger.warn("static configurations are:" + new ArrayList<>(settings.entrySet()).toString());
logger.info("static configurations are:" + new ArrayList<>(settings.entrySet()).toString());
}
private static void set(String key, String value) {

View File

@ -17,12 +17,11 @@ package org.tikv.common;
import static org.junit.Assert.assertEquals;
import org.junit.Ignore;
import org.junit.Test;
public class TiConfigurationTest {
// Set `-Dtikv.configuration_file=src/test/resources/tikv_client_config.properties` to test
@Ignore
@Test
public void configFileTest() {
TiConfiguration conf = TiConfiguration.createRawDefault();
assertEquals("configFileTest", conf.getDBPrefix());