summaryrefslogtreecommitdiff
path: root/simulator/opendc/opendc-runner-web/src
diff options
context:
space:
mode:
authorjc0b <j@jc0b.computer>2020-07-24 12:19:59 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:48:23 +0200
commitac32bdb6c33f546133dd4e1fd1dd400195354679 (patch)
tree3f95ce7fdcc19ae8ce915d0d969d9da59b9f840d /simulator/opendc/opendc-runner-web/src
parenta4ce2e57a52c226b62ac663dc629f3667e4fb2b4 (diff)
parent2892f05baeb79f77586eb36d3506a57b1d20b8aa (diff)
Merge branch 'master' of github.com:atlarge-research/opendc-dev
Diffstat (limited to 'simulator/opendc/opendc-runner-web/src')
-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()
}
}
}