summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-07-01 13:56:28 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-07-01 13:56:28 +0000
commit18384705a5e7426a2c808a37f3c1e216dcb6ebd4 (patch)
treeaaca2134c8b52b40cfe3409370644f51e285ee9b
parentdd76185fd1639d22393d600a248b18b44ad534aa (diff)
round -> ceil to avoid premature timeout
in the cases where the timeout is not divisible by the tick size.
-rw-r--r--fnet/src/vespa/fnet/scheduler.cpp3
-rw-r--r--jrt/src/com/yahoo/jrt/Scheduler.java2
2 files changed, 3 insertions, 2 deletions
diff --git a/fnet/src/vespa/fnet/scheduler.cpp b/fnet/src/vespa/fnet/scheduler.cpp
index 6c8340c1ff8..d9229cd4843 100644
--- a/fnet/src/vespa/fnet/scheduler.cpp
+++ b/fnet/src/vespa/fnet/scheduler.cpp
@@ -3,6 +3,7 @@
#include "scheduler.h"
#include "task.h"
#include <sstream>
+#include <cmath>
#include <vespa/log/log.h>
LOG_SETUP(".fnet.scheduler");
@@ -68,7 +69,7 @@ FNET_Scheduler::~FNET_Scheduler()
void
FNET_Scheduler::Schedule(FNET_Task *task, double seconds)
{
- uint32_t ticks = 1 + (uint32_t) (seconds * (1000 / SLOT_TICK) + 0.5);
+ uint32_t ticks = 1 + (uint32_t) std::ceil(seconds * (1000.0 / SLOT_TICK));
std::lock_guard<std::mutex> guard(_lock);
if (!task->_killed) {
diff --git a/jrt/src/com/yahoo/jrt/Scheduler.java b/jrt/src/com/yahoo/jrt/Scheduler.java
index 57b5ac43cea..ae5a827076e 100644
--- a/jrt/src/com/yahoo/jrt/Scheduler.java
+++ b/jrt/src/com/yahoo/jrt/Scheduler.java
@@ -61,7 +61,7 @@ class Scheduler {
if (seconds < 0.0) {
throw new IllegalArgumentException("cannot schedule a Task in the past");
}
- int ticks = 1 + (int) (seconds * 10.0 + 0.5);
+ int ticks = 1 + (int) Math.ceil(seconds * (1000.0 / TICK));
if (isActive(task)) {
linkOut(task);
}