aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/InMemoryFileIndex.scala2
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/FileIndexSuite.scala26
2 files changed, 27 insertions, 1 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/InMemoryFileIndex.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/InMemoryFileIndex.scala
index 7531f0ae02..ee4d0863d9 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/InMemoryFileIndex.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/InMemoryFileIndex.scala
@@ -66,8 +66,8 @@ class InMemoryFileIndex(
}
override def refresh(): Unit = {
- refresh0()
fileStatusCache.invalidateAll()
+ refresh0()
}
private def refresh0(): Unit = {
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/FileIndexSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/FileIndexSuite.scala
index 2b4c9f3ed3..efbfc2417d 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/FileIndexSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/FileIndexSuite.scala
@@ -178,6 +178,32 @@ class FileIndexSuite extends SharedSQLContext {
assert(catalog2.allFiles().nonEmpty)
}
}
+
+ test("refresh for InMemoryFileIndex with FileStatusCache") {
+ withTempDir { dir =>
+ val fileStatusCache = FileStatusCache.getOrCreate(spark)
+ val dirPath = new Path(dir.getAbsolutePath)
+ val fs = dirPath.getFileSystem(spark.sessionState.newHadoopConf())
+ val catalog =
+ new InMemoryFileIndex(spark, Seq(dirPath), Map.empty, None, fileStatusCache) {
+ def leafFilePaths: Seq[Path] = leafFiles.keys.toSeq
+ def leafDirPaths: Seq[Path] = leafDirToChildrenFiles.keys.toSeq
+ }
+
+ val file = new File(dir, "text.txt")
+ stringToFile(file, "text")
+ assert(catalog.leafDirPaths.isEmpty)
+ assert(catalog.leafFilePaths.isEmpty)
+
+ catalog.refresh()
+
+ assert(catalog.leafFilePaths.size == 1)
+ assert(catalog.leafFilePaths.head == fs.makeQualified(new Path(file.getAbsolutePath)))
+
+ assert(catalog.leafDirPaths.size == 1)
+ assert(catalog.leafDirPaths.head == fs.makeQualified(dirPath))
+ }
+ }
}
class FakeParentPathFileSystem extends RawLocalFileSystem {