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