Modules Timer API: Wait at least 1 ms per iteration. Convert to ms.

This commit is contained in:
antirez 2018-03-31 10:11:26 +02:00
parent 4c11bc6cf0
commit ee982f4031

View File

@ -4076,13 +4076,14 @@ int moduleTimerHandler(struct aeEventLoop *eventLoop, long long id, void *client
raxRemove(Timers,(unsigned char*)ri.key,ri.key_len,NULL); raxRemove(Timers,(unsigned char*)ri.key,ri.key_len,NULL);
zfree(timer); zfree(timer);
} else { } else {
next_period = expiretime-now; next_period = (expiretime-now)/1000; /* Scale to milliseconds. */
break; break;
} }
} }
raxStop(&ri); raxStop(&ri);
/* Reschedule the next timer or cancel it. */ /* Reschedule the next timer or cancel it. */
if (next_period <= 0) next_period = 1;
return (raxSize(Timers) > 0) ? next_period : AE_NOMORE; return (raxSize(Timers) > 0) ? next_period : AE_NOMORE;
} }
@ -4160,7 +4161,7 @@ int RM_GetTimerInfo(RedisModuleCtx *ctx, RedisModuleTimerID id, uint64_t *remain
if (remaining) { if (remaining) {
int64_t rem = ntohu64(id)-ustime(); int64_t rem = ntohu64(id)-ustime();
if (rem < 0) rem = 0; if (rem < 0) rem = 0;
*remaining = rem; *remaining = rem/1000; /* Scale to milliseconds. */
} }
if (data) *data = timer->data; if (data) *data = timer->data;
return REDISMODULE_OK; return REDISMODULE_OK;