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