summaryrefslogtreecommitdiff
path: root/simulator/opendc
diff options
context:
space:
mode:
authorGeorgios Andreadis <info@gandreadis.com>2020-07-22 21:27:07 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:48:22 +0200
commit26511df9a05855346ef5c6dc667b5d3fb522a463 (patch)
treeee8fd0eeaa2481fbcaf4213efce2eeeeb3a8c719 /simulator/opendc
parent9e7cb3bd367607b32e102c3a87b68b33c53dec46 (diff)
parent9a210ccfc09bfec0f42412d93b4a139095b1e567 (diff)
Merge pull request #13 from atlarge-research/bug/runner-heartbeat
Terminate heartbeat after scenario finish
Diffstat (limited to 'simulator/opendc')
-rw-r--r--simulator/opendc/opendc-runner-web/src/main/kotlin/com/atlarge/opendc/runner/web/Main.kt15
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()
}
}
}