STORM-3720 get correct results for BlobStoreFile getModTime() (#3357)

diff --git a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreFile.java b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreFile.java
index 45b15b1..bff6a08 100644
--- a/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreFile.java
+++ b/external/storm-hdfs-blobstore/src/main/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreFile.java
@@ -45,7 +45,6 @@
     private final String key;
     private final boolean isTmp;
     private final Path path;
-    private Long modTime = null;
     private final boolean mustBeNew;
     private final Configuration hadoopConf;
     private final FileSystem fileSystem;
@@ -106,11 +105,7 @@
 
     @Override
     public long getModTime() throws IOException {
-        if (modTime == null) {
-            FileSystem fs = path.getFileSystem(hadoopConf);
-            modTime = fs.getFileStatus(path).getModificationTime();
-        }
-        return modTime;
+        return fileSystem.getFileStatus(path).getModificationTime();
     }
 
     private void checkIsNotTmp() {
diff --git a/external/storm-hdfs-blobstore/src/test/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreImplTest.java b/external/storm-hdfs-blobstore/src/test/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreImplTest.java
index 0d44f05..ba7b33d 100644
--- a/external/storm-hdfs-blobstore/src/test/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreImplTest.java
+++ b/external/storm-hdfs-blobstore/src/test/java/org/apache/storm/hdfs/blobstore/HdfsBlobStoreImplTest.java
@@ -104,6 +104,14 @@
                 ios.write(testString.getBytes(StandardCharsets.UTF_8));
             }
 
+            // test modTime can change
+            Long initialModTime = pfile.getModTime();
+            try (OutputStream ios = pfile.getOutputStream()) {
+                ios.write(testString.getBytes(StandardCharsets.UTF_8));
+            }
+            Long nextModTime = pfile.getModTime();
+            assertTrue(nextModTime > initialModTime);
+
             // test commit creates properly
             assertTrue("BlobStore key dir wasn't created", fs.exists(fullKeyDir));
             pfile.commit();
diff --git a/storm-server/src/main/java/org/apache/storm/blobstore/LocalFsBlobStoreFile.java b/storm-server/src/main/java/org/apache/storm/blobstore/LocalFsBlobStoreFile.java
index c4f3164..2262e90 100644
--- a/storm-server/src/main/java/org/apache/storm/blobstore/LocalFsBlobStoreFile.java
+++ b/storm-server/src/main/java/org/apache/storm/blobstore/LocalFsBlobStoreFile.java
@@ -29,7 +29,6 @@
     private final boolean isTmp;
     private final File path;
     private final boolean mustBeNew;
-    private Long modTime = null;
     private SettableBlobMeta meta;
 
     public LocalFsBlobStoreFile(File base, String name) {
@@ -75,10 +74,7 @@
 
     @Override
     public long getModTime() throws IOException {
-        if (modTime == null) {
-            modTime = path.lastModified();
-        }
-        return modTime;
+        return path.lastModified();
     }
 
     @Override