Unlisting

This commit is contained in:
bskjon 2025-04-27 02:39:43 +02:00
parent 9c6aa304a8
commit 421afb8096
4 changed files with 49 additions and 4 deletions

View File

@ -14,9 +14,21 @@ import no.iktdev.mediaprocessing.shared.common.getAppVersion
import no.iktdev.mediaprocessing.shared.common.toEventsDatabase import no.iktdev.mediaprocessing.shared.common.toEventsDatabase
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication import org.springframework.boot.runApplication
import org.springframework.transaction.annotation.Transactional
import javax.annotation.PreDestroy
@SpringBootApplication @SpringBootApplication
class ConvertApplication class ConvertApplication {
@PreDestroy
fun onShutdown() {
doTransactionalCleanup()
}
@Transactional
fun doTransactionalCleanup() {
runnerManager.unlist()
}
}
val ioCoroutine = CoroutinesIO() val ioCoroutine = CoroutinesIO()
val defaultCoroutine = CoroutinesDefault() val defaultCoroutine = CoroutinesDefault()
@ -56,4 +68,4 @@ fun main(args: Array<String>) {
runApplication<ConvertApplication>(*args) runApplication<ConvertApplication>(*args)
log.info { "App Version: ${getAppVersion()}" } log.info { "App Version: ${getAppVersion()}" }
} }
//private val logger = KotlinLogging.logger {} //private val logger = KotlinLogging.logger {}

View File

@ -17,6 +17,8 @@ import no.iktdev.streamit.library.db.tables.helper.data_video
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Bean
import org.springframework.transaction.annotation.Transactional
import javax.annotation.PreDestroy
val log = KotlinLogging.logger {} val log = KotlinLogging.logger {}
lateinit var eventDatabase: EventsDatabase lateinit var eventDatabase: EventsDatabase
@ -32,6 +34,16 @@ class CoordinatorApplication {
return eventsManager return eventsManager
} }
@PreDestroy
fun onShutdown() {
doTransactionalCleanup()
}
@Transactional
fun doTransactionalCleanup() {
runnerManager.unlist()
}
} }
private lateinit var storeDatabase: MySqlDataSource private lateinit var storeDatabase: MySqlDataSource
@ -120,4 +132,4 @@ fun printSharedConfig() {
/*log.info { "Database: ${DatabaseConfig.database} @ ${DatabaseConfig.address}:${DatabaseConfig.port}" } /*log.info { "Database: ${DatabaseConfig.database} @ ${DatabaseConfig.address}:${DatabaseConfig.port}" }
log.info { "Username: ${DatabaseConfig.username}" } log.info { "Username: ${DatabaseConfig.username}" }
log.info { "Password: ${if (DatabaseConfig.password.isNullOrBlank()) "Is not set" else "Is set"}" }*/ log.info { "Password: ${if (DatabaseConfig.password.isNullOrBlank()) "Is not set" else "Is set"}" }*/
} }

View File

@ -17,7 +17,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication import org.springframework.boot.runApplication
import org.springframework.scheduling.annotation.EnableScheduling import org.springframework.scheduling.annotation.EnableScheduling
import org.springframework.scheduling.annotation.Scheduled import org.springframework.scheduling.annotation.Scheduled
import org.springframework.transaction.annotation.Transactional
import javax.annotation.PreDestroy
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
@ -27,6 +28,17 @@ val defaultCoroutine = CoroutinesDefault()
@SpringBootApplication @SpringBootApplication
class ProcesserApplication { class ProcesserApplication {
@PreDestroy
fun onShutdown() {
doTransactionalCleanup()
}
@Transactional
fun doTransactionalCleanup() {
runnerManager.unlist()
}
} }
private lateinit var eventsDatabase: MySqlDataSource private lateinit var eventsDatabase: MySqlDataSource

View File

@ -4,9 +4,12 @@ import mu.KotlinLogging
import no.iktdev.eventi.database.DataSource import no.iktdev.eventi.database.DataSource
import no.iktdev.eventi.database.executeOrException import no.iktdev.eventi.database.executeOrException
import no.iktdev.eventi.database.withDirtyRead import no.iktdev.eventi.database.withDirtyRead
import no.iktdev.eventi.database.withTransaction
import no.iktdev.mediaprocessing.shared.common.database.tables.runners import no.iktdev.mediaprocessing.shared.common.database.tables.runners
import no.iktdev.mediaprocessing.shared.common.getAppVersion import no.iktdev.mediaprocessing.shared.common.getAppVersion
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.deleteWhere
import org.jetbrains.exposed.sql.insert import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.select import org.jetbrains.exposed.sql.select
import java.util.UUID import java.util.UUID
@ -50,6 +53,12 @@ class RunnerManager(private val dataSource: DataSource, val startId: String = UU
} ?: true } ?: true
} ?: true } ?: true
} }
fun unlist() {
withTransaction(dataSource.database) {
runners.deleteWhere { (runners.startId eq startId) and (runners.application eq applicationName) }
}
}
} }
enum class ActiveMode { enum class ActiveMode {