diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/PackageTools.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/PackageTools.kt index 7b345bd5..448f2c95 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/PackageTools.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/PackageTools.kt @@ -143,12 +143,17 @@ object PackageTools { * It may return an instance of HttpSource or SourceFactory depending on the extension. */ fun loadExtensionSources(jarPath: String, className: String): Any { - logger.debug { "loading jar with path: $jarPath" } - val classLoader = jarLoaderMap[jarPath] ?: URLClassLoader(arrayOf(URL("file:$jarPath"))) - val classToLoad = Class.forName(className, false, classLoader) + try { + logger.debug { "loading jar with path: $jarPath" } + val classLoader = jarLoaderMap[jarPath] ?: URLClassLoader(arrayOf(URL("file:$jarPath"))) + val classToLoad = Class.forName(className, false, classLoader) - jarLoaderMap[jarPath] = classLoader + jarLoaderMap[jarPath] = classLoader - return classToLoad.getDeclaredConstructor().newInstance() + return classToLoad.getDeclaredConstructor().newInstance() + } catch (e: Exception) { + logger.error(e) { "Failed to load jar with path: $jarPath" } + throw e + } } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/source/GetCatalogueSource.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/source/GetCatalogueSource.kt index c3e2a06e..7375282a 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/source/GetCatalogueSource.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/util/source/GetCatalogueSource.kt @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory import eu.kanade.tachiyomi.source.online.HttpSource +import mu.KotlinLogging import org.jetbrains.exposed.sql.select import org.jetbrains.exposed.sql.transactions.transaction import org.kodein.di.DI @@ -23,6 +24,8 @@ import suwayomi.tachidesk.server.ApplicationDirs import java.util.concurrent.ConcurrentHashMap object GetCatalogueSource { + private val logger = KotlinLogging.logger { } + private val sourceCache = ConcurrentHashMap() private val applicationDirs by DI.global.instance() @@ -57,7 +60,12 @@ object GetCatalogueSource { } fun getCatalogueSourceOrNull(sourceId: Long): CatalogueSource? { - return runCatching { getCatalogueSource(sourceId) }.getOrNull() + return try { + getCatalogueSource(sourceId) + } catch (e: Exception) { + logger.warn(e) { "getCatalogueSource($sourceId) failed" } + null + } } fun getCatalogueSourceOrStub(sourceId: Long): CatalogueSource {