HADOOP-10534. KeyProvider getKeysMetadata should take a list of names

rather than returning all keys. (omalley)


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1589773 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Owen O'Malley 2014-04-24 15:49:44 +00:00
parent 24d1cf9ac6
commit f9a9c1ee63
3 changed files with 17 additions and 18 deletions

View File

@ -23,8 +23,8 @@ Trunk (Unreleased)
if the override value is same as the final parameter value. if the override value is same as the final parameter value.
(Ravi Prakash via suresh) (Ravi Prakash via suresh)
HADOOP-8078. Add capability to turn on security in unit tests. (Jaimin Jetly HADOOP-8078. Add capability to turn on security in unit tests. (Jaimin
via jitendra) Jetly via jitendra)
HADOOP-7757. Test file reference count is at least 3x actual value (Jon HADOOP-7757. Test file reference count is at least 3x actual value (Jon
Eagles via bobby) Eagles via bobby)
@ -141,6 +141,9 @@ Trunk (Unreleased)
HADOOP-10430. KeyProvider Metadata should have an optional description, HADOOP-10430. KeyProvider Metadata should have an optional description,
there should be a method to retrieve the metadata from all keys. (tucu) there should be a method to retrieve the metadata from all keys. (tucu)
HADOOP-10534. KeyProvider getKeysMetadata should take a list of names
rather than returning all keys. (omalley)
BUG FIXES BUG FIXES
HADOOP-9451. Fault single-layer config if node group topology is enabled. HADOOP-9451. Fault single-layer config if node group topology is enabled.

View File

@ -312,20 +312,16 @@ public abstract class KeyProvider {
/** /**
* Get the key metadata for all keys. * Get key metadata in bulk.
* * @param names the names of the keys to get
* @return a Map with all the keys and their metadata
* @throws IOException * @throws IOException
*/ */
public Map<String, Metadata> getKeysMetadata() throws IOException { public Metadata[] getKeysMetadata(String... names) throws IOException {
Map<String, Metadata> keysMetadata = new LinkedHashMap<String, Metadata>(); Metadata[] result = new Metadata[names.length];
for (String key : getKeys()) { for (int i=0; i < names.length; ++i) {
Metadata meta = getMetadata(key); result[i] = getMetadata(names[i]);
if (meta != null) {
keysMetadata.put(key, meta);
}
} }
return keysMetadata; return result;
} }
/** /**

View File

@ -230,16 +230,16 @@ public class KeyShell extends Configured implements Tool {
} }
public void execute() throws IOException { public void execute() throws IOException {
List<String> keys;
try { try {
List<String> keys = provider.getKeys();
out.println("Listing keys for KeyProvider: " + provider.toString()); out.println("Listing keys for KeyProvider: " + provider.toString());
if (metadata) { if (metadata) {
Map<String, Metadata> keysMeta = provider.getKeysMetadata(); Metadata[] meta =
for (Map.Entry<String, Metadata> entry : keysMeta.entrySet()) { provider.getKeysMetadata(keys.toArray(new String[keys.size()]));
out.println(entry.getKey() + " : " + entry.getValue()); for(int i=0; i < meta.length; ++i) {
out.println(keys.get(i) + " : " + meta[i]);
} }
} else { } else {
keys = provider.getKeys();
for (String keyName : keys) { for (String keyName : keys) {
out.println(keyName); out.println(keyName);
} }