HADOOP-14880. [KMS] Document&test missing KMS client side configs. Contributed by Gabor Bota.

This commit is contained in:
Wei-Chiu Chuang 2017-10-19 06:02:13 -07:00
parent 60bfee270e
commit 97c70c7ac6
4 changed files with 22 additions and 6 deletions

View File

@ -121,10 +121,6 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension,
private static final String CONFIG_PREFIX = "hadoop.security.kms.client.";
/* It's possible to specify a timeout, in seconds, in the config file */
public static final String TIMEOUT_ATTR = CONFIG_PREFIX + "timeout";
public static final int DEFAULT_TIMEOUT = 60;
/* Number of times to retry authentication in the event of auth failure
* (normally happens due to stale authToken)
*/
@ -361,7 +357,9 @@ public class KMSClientProvider extends KeyProvider implements CryptoExtension,
throw new IOException(ex);
}
}
int timeout = conf.getInt(TIMEOUT_ATTR, DEFAULT_TIMEOUT);
int timeout = conf.getInt(
CommonConfigurationKeysPublic.KMS_CLIENT_TIMEOUT_SECONDS,
CommonConfigurationKeysPublic.KMS_CLIENT_TIMEOUT_DEFAULT);
authRetry = conf.getInt(AUTH_RETRY, DEFAULT_AUTH_RETRY);
configurator = new TimeoutConnConfigurator(timeout, sslFactory);
encKeyVersionQueue =

View File

@ -721,6 +721,15 @@ public class CommonConfigurationKeysPublic {
/** Default value for KMS_CLIENT_ENC_KEY_CACHE_EXPIRY (12 hrs)*/
public static final int KMS_CLIENT_ENC_KEY_CACHE_EXPIRY_DEFAULT = 43200000;
/**
* @see
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">
* core-default.xml</a>
*/
public static final String KMS_CLIENT_TIMEOUT_SECONDS =
"hadoop.security.kms.client.timeout";
public static final int KMS_CLIENT_TIMEOUT_DEFAULT = 60;
/**
* @see
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">

View File

@ -2340,6 +2340,14 @@
key will be dropped. Default = 12hrs
</description>
</property>
<property>
<name>hadoop.security.kms.client.timeout</name>
<value>60</value>
<description>
Sets value for KMS client connection timeout, and the read timeout
to KMS servers.
</description>
</property>
<property>
<name>hadoop.security.kms.client.failover.sleep.base.millis</name>

View File

@ -33,6 +33,7 @@ import org.apache.hadoop.crypto.key.kms.KMSClientProvider;
import org.apache.hadoop.crypto.key.kms.KMSDelegationToken;
import org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider;
import org.apache.hadoop.crypto.key.kms.ValueQueue;
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.minikdc.MiniKdc;
import org.apache.hadoop.security.Credentials;
@ -1883,7 +1884,7 @@ public class TestKMS {
public void testKMSTimeout() throws Exception {
File confDir = getTestDir();
Configuration conf = createBaseKMSConf(confDir);
conf.setInt(KMSClientProvider.TIMEOUT_ATTR, 1);
conf.setInt(CommonConfigurationKeysPublic.KMS_CLIENT_TIMEOUT_SECONDS, 1);
writeConf(confDir, conf);
ServerSocket sock;