From b1940f445cb2037aa8f7aa42411c98962d5dd8b0 Mon Sep 17 00:00:00 2001 From: Viktor Bellavin Date: Mon, 7 Sep 2020 23:59:19 +0300 Subject: [PATCH] EPMDJ-3407 Fixed restoring of build diff (parent build reference) after server restart. --- core/src/main/kotlin/agent/State.kt | 12 +++++++++--- core/src/main/kotlin/endpoints/AgentManager.kt | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/main/kotlin/agent/State.kt b/core/src/main/kotlin/agent/State.kt index f0cca0860..12de768c6 100644 --- a/core/src/main/kotlin/agent/State.kt +++ b/core/src/main/kotlin/agent/State.kt @@ -52,11 +52,17 @@ internal class AgentData( ) suspend fun initBuild(version: String) { - val agentBuild = buildManager.init(version) - store(agentBuild) + if (buildManager.builds.none()) { + loadStoredData() + } + buildManager[version] ?: run { + val agentBuild = buildManager.init(version) + store(agentBuild) + } } internal suspend fun initClasses() { + kotlin.runCatching { } val addedClasses: List = buildManager.collectClasses() logger.debug { "Saving ${addedClasses.size} classes..." } measureTime { @@ -102,7 +108,7 @@ internal class AgentData( logger.debug { "Saved build ${agentBuild.id}." } } - suspend fun loadStoredData() = storeClient.findById(agentId)?.let { summary -> + private suspend fun loadStoredData() = storeClient.findById(agentId)?.let { summary -> logger.debug { "Loading data for $agentId..." } _settings.value = summary.settings val classBytes: Map = storeClient.findById(agentId)?.let { diff --git a/core/src/main/kotlin/endpoints/AgentManager.kt b/core/src/main/kotlin/endpoints/AgentManager.kt index bf4135344..5e9db8356 100644 --- a/core/src/main/kotlin/endpoints/AgentManager.kt +++ b/core/src/main/kotlin/endpoints/AgentManager.kt @@ -85,7 +85,6 @@ class AgentManager(override val kodein: Kodein) : KodeinAware { val info = storedInfo ?: config.toAgentInfo() val entry = AgentEntry(info, session) agentStorage.put(id, entry) - adminData.loadStoredData() storedInfo?.initPlugins(entry) app.launch { storedInfo?.sync(needSync) // sync only existing info!