STORM-3477 switch HDFS blobstore isRemoteBlobExists to use file exist… (#3094)
* STORM-3477 switch HDFS blobstore isRemoteBlobExists to use file exists for lower overhead
diff --git a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStore.java b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStore.java
index da918c4..5d4884b 100644
--- a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStore.java
+++ b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStore.java
@@ -336,6 +336,25 @@
}
}
+ /**
+ * Checks if a blob exists.
+ *
+ * @param key blobstore key
+ * @param who subject
+ * @throws AuthorizationException if authorization is failed
+ */
+ public boolean blobExists(String key, Subject who) throws AuthorizationException {
+ try {
+ who = checkAndGetSubject(who);
+ validateKey(key);
+ SettableBlobMeta meta = getStoredBlobMeta(key);
+ aclHandler.hasPermissions(meta.get_acl(), READ, who, key);
+ } catch (KeyNotFoundException e) {
+ return false;
+ }
+ return true;
+ }
+
@Override
public Iterator<String> listKeys() {
try {
diff --git a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsClientBlobStore.java b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsClientBlobStore.java
index ce159d5..65861eb 100644
--- a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsClientBlobStore.java
+++ b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsClientBlobStore.java
@@ -75,12 +75,7 @@
@Override
public boolean isRemoteBlobExists(String blobKey) throws AuthorizationException {
- try {
- blobStore.getBlob(blobKey, null);
- } catch (KeyNotFoundException e) {
- return false;
- }
- return true;
+ return blobStore.blobExists(blobKey, null);
}
@Override