fun minTranslogGenRequired()

in src/main/kotlin/org/opensearch/index/translog/ReplicationTranslogDeletionPolicy.kt [92:119]


        fun minTranslogGenRequired(
            readers: List<TranslogReader>, writer: TranslogWriter,
            translogPruningEnabled: Boolean, retentionSizeInBytes: Long,
            retentionAgeInMillis: Long, retentionTotalFiles: Int,
            minTranslogGenRequiredByLocks: Long, retentionLeasesSupplier: Supplier<RetentionLeases>
        ): Long {
            val minBySize: Long = getMinTranslogGenBySize(readers, writer, retentionSizeInBytes)
            var minByRetentionLeasesAndSize = Long.MAX_VALUE
            if (translogPruningEnabled) {
                // If retention size is specified, size takes precedence.
                val minByRetentionLeases: Long =
                    getMinTranslogGenByRetentionLease(readers, writer, retentionLeasesSupplier)
                minByRetentionLeasesAndSize = minBySize.coerceAtLeast(minByRetentionLeases)
            }
            val minByAge = getMinTranslogGenByAge(readers, writer, retentionAgeInMillis, System.currentTimeMillis())
            val minByAgeAndSize = if (minBySize == Long.MIN_VALUE && minByAge == Long.MIN_VALUE) {
                // both size and age are disabled;
                Long.MAX_VALUE
            } else {
                minByAge.coerceAtLeast(minBySize)
            }
            val minByNumFiles = getMinTranslogGenByTotalFiles(readers, writer, retentionTotalFiles)
            val minByLocks: Long = minTranslogGenRequiredByLocks
            val minByTranslogGenSettings = minByAgeAndSize.coerceAtLeast(minByNumFiles).coerceAtMost(minByLocks)

            // If retention size is specified, size takes precedence.
            return minByTranslogGenSettings.coerceAtMost(minByRetentionLeasesAndSize)
        }