HeartSaVioR commented on a change in pull request #26502: [SPARK-29876][SS]
Delete/archive file source completed files in separate thread
URL: https://github.com/apache/spark/pull/26502#discussion_r346051087
##########
File path:
sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/FileStreamSource.scala
##########
@@ -342,7 +344,14 @@ object FileStreamSource {
def size: Int = map.size()
}
- private[sql] trait FileStreamSourceCleaner {
+ private[sql] abstract class FileStreamSourceCleaner {
+ protected val cleanThreadPool = ThreadUtils.newDaemonCachedThreadPool(
+ "file-source-cleaner-threadpool",
+ SQLConf.get.getConf(SQLConf.FILE_SOURCE_CLEANER_NUM_THREADS)
+ )
+
+ def stop(): Unit = cleanThreadPool.shutdown()
Review comment:
Even we just provide "best-effort" on cleaning files, we may want to at
least log warning (or at least info) messages for unhandled files. Now they're
just ignored silently which is not symmetric with failing to rename/delete.
As javadoc mentioned, shutdown() doesn't wait for previously submitted tasks
to complete execution; graceful shutdown would be calling awaitTermination()
with proper timeout, and calling shutdownNow() and logging remaining tasks.
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html#shutdown--
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]