From ee982f4031771013bdbd12086c185fb53db45060 Mon Sep 17 00:00:00 2001 From: antirez <antirez@gmail.com> Date: Sat, 31 Mar 2018 10:11:26 +0200 Subject: [PATCH] Modules Timer API: Wait at least 1 ms per iteration. Convert to ms. --- src/module.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/module.c b/src/module.c index 3022f8bb..2a11b850 100644 --- a/src/module.c +++ b/src/module.c @@ -4076,13 +4076,14 @@ int moduleTimerHandler(struct aeEventLoop *eventLoop, long long id, void *client raxRemove(Timers,(unsigned char*)ri.key,ri.key_len,NULL); zfree(timer); } else { - next_period = expiretime-now; + next_period = (expiretime-now)/1000; /* Scale to milliseconds. */ break; } } raxStop(&ri); /* Reschedule the next timer or cancel it. */ + if (next_period <= 0) next_period = 1; return (raxSize(Timers) > 0) ? next_period : AE_NOMORE; } @@ -4160,7 +4161,7 @@ int RM_GetTimerInfo(RedisModuleCtx *ctx, RedisModuleTimerID id, uint64_t *remain if (remaining) { int64_t rem = ntohu64(id)-ustime(); if (rem < 0) rem = 0; - *remaining = rem; + *remaining = rem/1000; /* Scale to milliseconds. */ } if (data) *data = timer->data; return REDISMODULE_OK;