gaborgsomogyi commented on a change in pull request #22952: [SPARK-20568][SS] 
Provide option to clean up completed files in streaming query
URL: https://github.com/apache/spark/pull/22952#discussion_r256813413
 
 

 ##########
 File path: 
sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/FileStreamSource.scala
 ##########
 @@ -257,16 +261,33 @@ class FileStreamSource(
    * equal to `end` and will only request offsets greater than `end` in the 
future.
    */
   override def commit(end: Offset): Unit = {
-    // No-op for now; FileStreamSource currently garbage-collects files based 
on timestamp
-    // and the value of the maxFileAge parameter.
+    val logOffset = FileStreamSourceOffset(end).logOffset
+
+    if (sourceOptions.cleanSource != CleanSourceMode.NO_OP) {
+      val files = metadataLog.get(Some(logOffset), 
Some(logOffset)).flatMap(_._2)
+      val validFileEntities = files.filter(_.batchId == logOffset)
+      logDebug(s"completed file entries: ${validFileEntities.mkString(",")}")
+      sourceOptions.cleanSource match {
+        case CleanSourceMode.ARCHIVE =>
+          validFileEntities.foreach(sourceCleaner.archive)
+
+        case CleanSourceMode.DELETE =>
 
 Review comment:
   @HeartSaVioR reading back my comment from yesterday is a bit... well not 
really clean :)
   
   > It may cause issues with exactly once...
   
   references the same thing what you've mentioned on #23782 and agree with you.
   
   Reprocessing files with the same name may cause several issues. What if file 
being archived and some producer is trying to append it, etc...
   I've left a more detailed comment on the mentioned PR. There I've added how 
streaming dealing with incoming files.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on 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]

Reply via email to