diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/sending/TestInfoSender.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/sending/TestInfoSender.kt index b3db15bc..20634f2a 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/sending/TestInfoSender.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/sending/TestInfoSender.kt @@ -49,13 +49,13 @@ class IntervalTestInfoSender( } override fun stopSendingTests() { + sendTests(collectTests()) + messageSender.shutdown() scheduledThreadPool.shutdown() if (!scheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS)) { logger.error("Failed to send some tests prior to shutdown") scheduledThreadPool.shutdownNow(); } - sendTests(collectTests()) - messageSender.shutdown() logger.info { "Test sending job is stopped." } } diff --git a/lib-jvm-shared/agent-transport/src/jvmMain/kotlin/com/epam/drill/agent/transport/QueuedAgentMessageSender.kt b/lib-jvm-shared/agent-transport/src/jvmMain/kotlin/com/epam/drill/agent/transport/QueuedAgentMessageSender.kt index b69962d0..309ed03f 100644 --- a/lib-jvm-shared/agent-transport/src/jvmMain/kotlin/com/epam/drill/agent/transport/QueuedAgentMessageSender.kt +++ b/lib-jvm-shared/agent-transport/src/jvmMain/kotlin/com/epam/drill/agent/transport/QueuedAgentMessageSender.kt @@ -16,7 +16,6 @@ package com.epam.drill.agent.transport import mu.KotlinLogging -import com.epam.drill.agent.common.transport.AgentMessage import com.epam.drill.agent.common.transport.AgentMessageDestination import com.epam.drill.agent.common.transport.AgentMessageSender import kotlinx.serialization.KSerializer @@ -52,13 +51,9 @@ open class QueuedAgentMessageSender( } } - override fun send(destination: AgentMessageDestination, message: T, serializer: KSerializer) { + override fun send(destination: AgentMessageDestination, message: T, serializer: KSerializer) { val mappedDestination = destinationMapper.map(destination) val serializedMessage = messageSerializer.serialize(message, serializer) - if (!isRunning.get()) { - handleUnsent(mappedDestination, serializedMessage, "sender is not running") - return - } if (!messageQueue.offer(Pair(mappedDestination, serializedMessage))) { handleUnsent(mappedDestination, serializedMessage, "queue capacity limit reached") return @@ -69,10 +64,10 @@ open class QueuedAgentMessageSender( } override fun shutdown() { - isRunning.set(false) + if (!isRunning.compareAndSet(true, false)) return executor.shutdown() try { - if (!executor.awaitTermination(5, TimeUnit.SECONDS)) { + if (!executor.awaitTermination(1, TimeUnit.SECONDS)) { executor.shutdownNow() } } catch (e: InterruptedException) { @@ -144,6 +139,7 @@ open class QueuedAgentMessageSender( tryToSend(destination, message) || handleUnsent(destination, message, reason) } } while (message != null) + logger.info { "Finished unloading a message queue." } } /** diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt index 8fec6feb..edad511a 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt @@ -59,14 +59,14 @@ class IntervalCoverageSender( } override fun stopSendingCoverage() { + sendProbes(collectReleasedProbes()) + sendProbes(collectUnreleasedProbes()) + sender.shutdown() scheduledThreadPool.shutdown() - if (!scheduledThreadPool.awaitTermination(5, TimeUnit.SECONDS)) { + if (!scheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS)) { logger.error("Failed to send some coverage data prior to shutdown") scheduledThreadPool.shutdownNow(); } - sendProbes(collectReleasedProbes()) - sendProbes(collectUnreleasedProbes()) - sender.shutdown() logger.info { "Coverage sending job is stopped." } }