From 69c91ec86a65f5d47971091d3b6ce1aa45b78c79 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Wed, 30 Sep 2020 00:13:16 +0200 Subject: [PATCH] Proper shutdown --- app/src/main/kotlin/SimpleNotes.kt | 33 +++++++++---------- .../main/kotlin/extensions/KoinExtensions.kt | 12 +++++++ app/src/main/kotlin/modules/ServerModule.kt | 3 +- deploy-docker-hub.sh | 2 +- .../src/main/kotlin/PersistanceModule.kt | 6 ++-- 5 files changed, 35 insertions(+), 21 deletions(-) create mode 100644 app/src/main/kotlin/extensions/KoinExtensions.kt diff --git a/app/src/main/kotlin/SimpleNotes.kt b/app/src/main/kotlin/SimpleNotes.kt index 307ba5e..ad992d8 100644 --- a/app/src/main/kotlin/SimpleNotes.kt +++ b/app/src/main/kotlin/SimpleNotes.kt @@ -1,25 +1,24 @@ package be.simplenotes.app +import be.simplenotes.app.extensions.addShutdownHook import be.simplenotes.app.modules.* import be.simplenotes.domain.domainModule import be.simplenotes.persistance.persistanceModule import be.simplenotes.search.searchModule import org.koin.core.context.startKoin -fun main() { - startKoin { - modules( - serverModule, - persistanceModule, - configModule, - baseModule, - userModule, - noteModule, - settingsModule, - domainModule, - searchModule, - apiModule, - jsonModule - ) - } -} +fun main() = startKoin { + modules( + serverModule, + persistanceModule, + configModule, + baseModule, + userModule, + noteModule, + settingsModule, + domainModule, + searchModule, + apiModule, + jsonModule + ) +}.addShutdownHook() diff --git a/app/src/main/kotlin/extensions/KoinExtensions.kt b/app/src/main/kotlin/extensions/KoinExtensions.kt new file mode 100644 index 0000000..acfb908 --- /dev/null +++ b/app/src/main/kotlin/extensions/KoinExtensions.kt @@ -0,0 +1,12 @@ +package be.simplenotes.app.extensions + +import org.koin.core.KoinApplication +import kotlin.concurrent.thread + +fun KoinApplication.addShutdownHook() { + Runtime.getRuntime().addShutdownHook( + thread(start = false) { + close() + } + ) +} diff --git a/app/src/main/kotlin/modules/ServerModule.kt b/app/src/main/kotlin/modules/ServerModule.kt index 8d8c83b..e40ca16 100644 --- a/app/src/main/kotlin/modules/ServerModule.kt +++ b/app/src/main/kotlin/modules/ServerModule.kt @@ -18,10 +18,11 @@ import org.http4k.server.asServer import org.koin.core.qualifier.named import org.koin.core.qualifier.qualifier import org.koin.dsl.module +import org.koin.dsl.onClose import org.http4k.server.ServerConfig as Http4kServerConfig val serverModule = module { - single(createdAtStart = true) { Server(get(), get()).start() } + single(createdAtStart = true) { Server(get(), get()).start() } onClose { it?.stop() } single { get().asServer(get()) } single { val config = get() diff --git a/deploy-docker-hub.sh b/deploy-docker-hub.sh index a08daf0..1778647 100755 --- a/deploy-docker-hub.sh +++ b/deploy-docker-hub.sh @@ -5,4 +5,4 @@ rm app/src/main/resources/static/styles* yarn --cwd css run css-purge \ && docker build -t hubv/simplenotes:latest . \ - # && docker push hubv/simplenotes:latest + && docker push hubv/simplenotes:latest diff --git a/persistance/src/main/kotlin/PersistanceModule.kt b/persistance/src/main/kotlin/PersistanceModule.kt index 8ebb455..8fc35f5 100644 --- a/persistance/src/main/kotlin/PersistanceModule.kt +++ b/persistance/src/main/kotlin/PersistanceModule.kt @@ -7,8 +7,10 @@ import be.simplenotes.persistance.users.UserRepositoryImpl import be.simplenotes.shared.config.DataSourceConfig import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource -import me.liuwj.ktorm.database.* +import me.liuwj.ktorm.database.Database +import org.koin.dsl.bind import org.koin.dsl.module +import org.koin.dsl.onClose import javax.sql.DataSource interface DbMigrations { @@ -31,7 +33,7 @@ val persistanceModule = module { single { UserRepositoryImpl(get()) } single { NoteRepositoryImpl(get()) } single { DbMigrationsImpl(get(), get()) } - single { hikariDataSource(get()) } + single { hikariDataSource(get()) } bind DataSource::class onClose { it?.close() } single { get().migrate() Database.connect(get())