guybe7 12991353b6 Missing EXEC on modules propagation after failed EVAL execution (#8654)
1. moduleReplicateMultiIfNeeded should use server.in_eval like
   moduleHandlePropagationAfterCommandCallback
2. server.in_eval could have been set to 1 and not reset back
   to 0 (a lot of missed early-exits after in_eval is already 1)

Note: The new assertions in processCommand cover (2) and I added
two module tests to cover (1)

Implications:
If an EVAL that failed (and thus left server.in_eval=1) runs before a module
command that replicates, the replication stream will contain MULTI (because
moduleReplicateMultiIfNeeded used to check server.lua_caller which is NULL
at this point) but not EXEC (because server.in_eval==1)
This only affects modules as module.c the only user of server.in_eval.

Affects versions 6.2.0, 6.2.1
2021-03-15 21:19:57 +02:00
..
2020-03-23 12:02:12 +01:00
2016-06-15 11:49:49 +02:00
2021-01-23 21:53:58 +02:00
2021-02-04 19:39:07 +02:00
2015-10-09 09:47:17 +02:00
2010-10-15 12:54:53 +02:00
2021-01-17 15:48:48 +02:00
2021-01-17 15:48:48 +02:00