@@ -27,10 +27,9 @@ import com.datadog.android.core.internal.persistence.file.mkdirsSafe
2727import java.io.File
2828import java.util.Locale
2929import java.util.concurrent.atomic.AtomicInteger
30+ import java.util.concurrent.atomic.AtomicLong
3031import kotlin.math.roundToLong
3132
32- // TODO RUM-438 Improve this class: need to make it thread-safe and optimize work with file
33- // system in order to reduce the number of syscalls (which are expensive) for files already seen
3433@Suppress(" TooManyFunctions" )
3534internal class BatchFileOrchestrator (
3635 private val rootDir : File ,
@@ -52,7 +51,7 @@ internal class BatchFileOrchestrator(
5251 private var previousFile: File ? = null
5352 private var previousFileItemCount: Long = 0
5453 private var lastFileAccessTimestamp: Long = 0L
55- private var lastCleanupTimestamp: Long = 0L
54+ private val lastCleanupTimestamp: AtomicLong = AtomicLong ( 0L )
5655 private var isFileObserverStarted: Boolean = false
5756
5857 private val knownFiles: MutableSet <File > = mutableSetOf ()
@@ -91,7 +90,7 @@ internal class BatchFileOrchestrator(
9190 var files = listBatchFiles()
9291 files = deleteObsoleteFiles(files)
9392 freeSpaceIfNeeded(files)
94- lastCleanupTimestamp = System .currentTimeMillis()
93+ lastCleanupTimestamp.set( System .currentTimeMillis() )
9594 }
9695
9796 return getReusableWritableFile() ? : createNewFile()
@@ -104,7 +103,7 @@ internal class BatchFileOrchestrator(
104103 }
105104
106105 val files = deleteObsoleteFiles(listSortedBatchFiles())
107- lastCleanupTimestamp = System .currentTimeMillis()
106+ lastCleanupTimestamp.set( System .currentTimeMillis() )
108107 pendingFiles.set(files.count())
109108
110109 return files.firstOrNull {
@@ -362,7 +361,7 @@ internal class BatchFileOrchestrator(
362361 }
363362
364363 private fun canDoCleanup (): Boolean {
365- return System .currentTimeMillis() - lastCleanupTimestamp > config.cleanupFrequencyThreshold
364+ return System .currentTimeMillis() - lastCleanupTimestamp.get() > config.cleanupFrequencyThreshold
366365 }
367366
368367 private val File .metadata: File
0 commit comments