diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.java index 237a50d0227b8..4fe223d203429 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.java @@ -86,19 +86,24 @@ public WrapperException(Throwable cause) { private RetryPolicy retryPolicy = null; public LoadBalancingKMSClientProvider(URI providerUri, - KMSClientProvider[] providers, Configuration conf) { + KMSClientProvider[] providers, Configuration conf) throws IOException { this(providerUri, providers, Time.monotonicNow(), conf); } @VisibleForTesting LoadBalancingKMSClientProvider(KMSClientProvider[] providers, long seed, - Configuration conf) { + Configuration conf) throws IOException { this(URI.create("kms://testing"), providers, seed, conf); } private LoadBalancingKMSClientProvider(URI uri, - KMSClientProvider[] providers, long seed, Configuration conf) { + KMSClientProvider[] providers, long seed, Configuration conf) throws IOException { super(conf); + + if (providers.length == 0) { + throw new IOException("No providers configured !"); + } + // uri is the token service so it can be instantiated for renew/cancel. dtService = KMSClientProvider.getDtService(uri); // if provider not in conf, new client will alias on uri else addr. @@ -165,9 +170,6 @@ public KMSClientProvider[] getProviders() { private T doOp(ProviderCallable op, int currPos, boolean isIdempotent) throws IOException { - if (providers.length == 0) { - throw new IOException("No providers configured !"); - } int numFailovers = 0; for (int i = 0;; i++, numFailovers++) { KMSClientProvider provider = providers[(currPos + i) % providers.length];