diff --git a/src/module.c b/src/module.c index 5c7a0ce0b..7caec9a52 100644 --- a/src/module.c +++ b/src/module.c @@ -8614,8 +8614,14 @@ void firePostExecutionUnitJobs(void) { * infinite loops by halting the execution could result in violation of the feature correctness * and so Redis will make no attempt to protect the module from infinite loops. * - * 'free_pd' can be NULL and in such case will not be used. */ + * 'free_pd' can be NULL and in such case will not be used. + * + * Return REDISMODULE_OK on success and REDISMODULE_ERR if was called while loading data from disk (AOF or RDB) or + * if the instance is a readonly replica. */ int RM_AddPostNotificationJob(RedisModuleCtx *ctx, RedisModulePostNotificationJobFunc callback, void *privdata, void (*free_privdata)(void*)) { + if (server.loading|| (server.masterhost && server.repl_slave_ro)) { + return REDISMODULE_ERR; + } RedisModulePostExecUnitJob *job = zmalloc(sizeof(*job)); job->module = ctx->module; job->callback = callback;