All Downloads are FREE. Search and download functionalities are using the official Maven repository.

no.ks.kes.mongodb.projection.MongoDBServerProjectionRepository.kt Maven / Gradle / Ivy

package no.ks.kes.mongodb.projection

import mu.KotlinLogging
import no.ks.kes.lib.HwmTrackerRepository
import no.ks.kes.lib.ProjectionRepository
import no.ks.kes.mongodb.MongoDBTransactionAwareCollectionFactory
import no.ks.kes.mongodb.hwm.MongoDBServerHwmTrackerRepository

private val log = KotlinLogging.logger { }

open class MongoDBProjectionRepository(factory: MongoDBTransactionAwareCollectionFactory, initialHwm: Long = -1) : ProjectionRepository {

    private val transactionTemplate = factory.getTransactionTemplate()

    override val hwmTracker: HwmTrackerRepository = MongoDBServerHwmTrackerRepository(factory, initialHwm)

    override fun transactionally(runnable: () -> Unit) {
        transactionTemplate.execute {
            try {
                runnable.invoke()
            } catch (e: Exception) {
                log.error(e) { "An error was encountered while updating hwm for projections, transaction will be rolled back" }
                throw e
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy