You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by sn...@apache.org on 2015/06/03 12:28:49 UTC
[02/10] incubator-ranger git commit: RANGER-520: key list is
retrieved before providing list of keys - to avoid stale list
RANGER-520: key list is retrieved before providing list of keys - to avoid stale list
Signed-off-by: Velmurugan Periasamy <ve...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/c5264171
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/c5264171
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/c5264171
Branch: refs/heads/ranger-0.5
Commit: c5264171128330e630e8be26ef7347b2f0fb69e8
Parents: 144c215
Author: sneethiraj <sn...@apache.org>
Authored: Mon Jun 1 16:26:52 2015 -0400
Committer: Velmurugan Periasamy <ve...@apache.org>
Committed: Mon Jun 1 17:45:21 2015 -0400
----------------------------------------------------------------------
.../crypto/key/RangerKeyStoreProvider.java | 25 +++++++++++++-------
1 file changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c5264171/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStoreProvider.java
----------------------------------------------------------------------
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStoreProvider.java b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStoreProvider.java
index 541f369..66356b2 100755
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStoreProvider.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerKeyStoreProvider.java
@@ -93,13 +93,7 @@ public class RangerKeyStoreProvider extends KeyProvider{
// Master Key does not exists
throw new IOException("Ranger MasterKey does not exists");
}
- try {
- loadKeys(masterKey);
- } catch (NoSuchAlgorithmException e) {
- throw new IOException("Can't load Keys");
- }catch(CertificateException e){
- throw new IOException("Can't load Keys");
- }
+ reloadKeys() ;
ReadWriteLock lock = new ReentrantReadWriteLock(true);
readLock = lock.readLock();
}
@@ -145,6 +139,7 @@ public class RangerKeyStoreProvider extends KeyProvider{
@Override
public KeyVersion createKey(String name, byte[] material, Options options)
throws IOException {
+ reloadKeys() ;
if (dbStore.engineContainsAlias(name) || cache.containsKey(name)) {
throw new IOException("Key " + name + " already exists");
}
@@ -275,7 +270,8 @@ public class RangerKeyStoreProvider extends KeyProvider{
@Override
public List<String> getKeys() throws IOException {
ArrayList<String> list = new ArrayList<String>();
- String alias = null;
+ String alias = null;
+ reloadKeys() ;
Enumeration<String> e = dbStore.engineAliases();
while (e.hasMoreElements()) {
alias = e.nextElement();
@@ -289,8 +285,9 @@ public class RangerKeyStoreProvider extends KeyProvider{
@Override
public Metadata getMetadata(String name) throws IOException {
- readLock.lock();
try {
+ readLock.lock();
+ reloadKeys() ;
if (cache.containsKey(name)) {
return cache.get(name);
}
@@ -345,6 +342,16 @@ public class RangerKeyStoreProvider extends KeyProvider{
}
}
}
+
+ private void reloadKeys() throws IOException {
+ try {
+ loadKeys(masterKey);
+ } catch (NoSuchAlgorithmException e) {
+ throw new IOException("Can't load Keys");
+ }catch(CertificateException e){
+ throw new IOException("Can't load Keys");
+ }
+ }
/**
* The factory to create JksProviders, which is used by the ServiceLoader.