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;