diff options
| author | Georgios Andreadis <info@gandreadis.com> | 2020-07-22 21:27:07 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-08-24 19:48:22 +0200 |
| commit | 26511df9a05855346ef5c6dc667b5d3fb522a463 (patch) | |
| tree | ee8fd0eeaa2481fbcaf4213efce2eeeeb3a8c719 /simulator | |
| parent | 9e7cb3bd367607b32e102c3a87b68b33c53dec46 (diff) | |
| parent | 9a210ccfc09bfec0f42412d93b4a139095b1e567 (diff) | |
Merge pull request #13 from atlarge-research/bug/runner-heartbeat
Terminate heartbeat after scenario finish
Diffstat (limited to 'simulator')
| -rw-r--r-- | simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt b/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt index 0ff9b870..807c119e 100644 --- a/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt +++ b/simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt @@ -276,6 +276,9 @@ class RunnerCli : CliktCommand(name = "runner") { } } + val POLL_INTERVAL = 5000L // ms = 5 s + val HEARTBEAT_INTERVAL = 60000L // ms = 1 min + override fun run() = runBlocking(Dispatchers.Default) { logger.info { "Starting OpenDC web runner" } logger.info { "Connecting to MongoDB instance" } @@ -293,7 +296,7 @@ class RunnerCli : CliktCommand(name = "runner") { val scenario = manager.findNext() if (scenario == null) { - delay(5000) + delay(POLL_INTERVAL) continue } @@ -308,9 +311,11 @@ class RunnerCli : CliktCommand(name = "runner") { coroutineScope { // Launch heartbeat process - launch { - delay(60000) - manager.heartbeat(id) + val heartbeat = launch { + while (true) { + delay(HEARTBEAT_INTERVAL) + manager.heartbeat(id) + } } try { @@ -326,6 +331,8 @@ class RunnerCli : CliktCommand(name = "runner") { } catch (e: Exception) { logger.warn(e) { "Scenario failed to finish" } manager.fail(id) + } finally { + heartbeat.cancel() } } } |
