Commit e9d2329c authored by antirez's avatar antirez
Browse files

Fix call() FORCE_REPL/AOF flags setting.

This commit also inverts two stanzas of the code just becuase they are
more logical like that, not because currently it makes any difference.
parent dfe7f797
...@@ -1164,6 +1164,19 @@ void evalGenericCommand(client *c, int evalsha) { ...@@ -1164,6 +1164,19 @@ void evalGenericCommand(client *c, int evalsha) {
lua_pop(lua,1); /* Remove the error handler. */ lua_pop(lua,1); /* Remove the error handler. */
} }
/* If we are using single commands replication, emit EXEC if there
* was at least a write. */
if (server.lua_replicate_commands) {
preventCommandPropagation(c);
if (server.lua_multi_emitted) {
robj *propargv[1];
propargv[0] = createStringObject("EXEC",4);
alsoPropagate(server.execCommand,c->db->id,propargv,1,
PROPAGATE_AOF|PROPAGATE_REPL);
decrRefCount(propargv[0]);
}
}
/* EVALSHA should be propagated to Slave and AOF file as full EVAL, unless /* EVALSHA should be propagated to Slave and AOF file as full EVAL, unless
* we are sure that the script was already in the context of all the * we are sure that the script was already in the context of all the
* attached slaves *and* the current AOF file if enabled. * attached slaves *and* the current AOF file if enabled.
...@@ -1186,22 +1199,10 @@ void evalGenericCommand(client *c, int evalsha) { ...@@ -1186,22 +1199,10 @@ void evalGenericCommand(client *c, int evalsha) {
rewriteClientCommandArgument(c,0, rewriteClientCommandArgument(c,0,
resetRefCount(createStringObject("EVAL",4))); resetRefCount(createStringObject("EVAL",4)));
rewriteClientCommandArgument(c,1,script); rewriteClientCommandArgument(c,1,script);
printf("forceCommandPropagation\n");
forceCommandPropagation(c,PROPAGATE_REPL|PROPAGATE_AOF); forceCommandPropagation(c,PROPAGATE_REPL|PROPAGATE_AOF);
} }
} }
/* If we are using single commands replication, emit EXEC if there
* was at least a write. */
if (server.lua_replicate_commands) {
preventCommandPropagation(c);
if (server.lua_multi_emitted) {
robj *propargv[1];
propargv[0] = createStringObject("EXEC",4);
alsoPropagate(server.execCommand,c->db->id,propargv,1,
PROPAGATE_AOF|PROPAGATE_REPL);
decrRefCount(propargv[0]);
}
}
} }
void evalCommand(client *c) { void evalCommand(client *c) {
......
...@@ -2213,8 +2213,8 @@ void call(client *c, int flags) { ...@@ -2213,8 +2213,8 @@ void call(client *c, int flags) {
/* If the command forced AOF / replication of the command, set /* If the command forced AOF / replication of the command, set
* the flags regardless of the command effects on the data set. */ * the flags regardless of the command effects on the data set. */
if (c->flags & CLIENT_FORCE_REPL) flags |= PROPAGATE_REPL; if (c->flags & CLIENT_FORCE_REPL) propagate_flags |= PROPAGATE_REPL;
if (c->flags & CLIENT_FORCE_AOF) flags |= PROPAGATE_AOF; if (c->flags & CLIENT_FORCE_AOF) propagate_flags |= PROPAGATE_AOF;
/* However prevent AOF / replication propagation if the command /* However prevent AOF / replication propagation if the command
* implementatino called preventCommandPropagation() or similar, * implementatino called preventCommandPropagation() or similar,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment