summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeir Shpilraien (Spielrein) <meir@redis.com>2022-12-06 12:22:36 +0200
committerOran Agra <oran@redislabs.com>2023-01-17 14:59:41 +0200
commitdad7f71f157620be7d2e4168cb6b07cbd255cf61 (patch)
tree7712aee1792d0e173517d223c0f84b030ab369d2
parent5e841b5533b36a33919e047306fb6a9b6315b7b4 (diff)
downloadredis-dad7f71f157620be7d2e4168cb6b07cbd255cf61.tar.gz
Remove dead code on sorting reply on Lua scripts. (#10701)
On v6.2.7 a new mechanism was added to Lua scripts that allows filtering the globals of the Lua interpreter. This mechanism was added on the following commit: https://github.com/redis/redis/commit/11b602fbf8f9cdf8fc741c24625ab6287ab998a9 One of the globals that was filtered out was `__redis__compare_helper`. This global was missed and was not added to the allow list or to the deny list. This is why we get the following warning when Redis starts: `A key '__redis__compare_helper' was added to Lua globals which is not on the globals allow list nor listed on the deny list.` After investigating the git blame log, the conclusion is that `__redis__compare_helper` is no longer needed, the PR deletes this function, and fixes the warning. Detailed Explanation: `__redis__compare_helper` was added on this commit: https://github.com/redis/redis/commit/2c861050c1 Its purpose is to sort the replies of `SORT` command when script replication is enable and keep the replies deterministic and avoid primary and replica synchronization issues. On `SORT` command, there was a need for special compare function that are able to compare boolean values. The need to sort the `SORT` command reply was removed on this commit: https://github.com/redis/redis/commit/36741b2c818a95e8ef167818271614ee6b1bc414 The sorting was moved to be part of the `SORT` command and there was not longer a need to sort it on the Lua interpreter. The commit made `__redis__compare_helper` a dead code but did not deleted it. (cherry picked from commit 64c657a8af03c6d58507b9620947491f36e75037)
-rw-r--r--src/scripting.c28
1 files changed, 1 insertions, 27 deletions
diff --git a/src/scripting.c b/src/scripting.c
index c5393c16e..42d26537b 100644
--- a/src/scripting.c
+++ b/src/scripting.c
@@ -328,21 +328,7 @@ void luaSortArray(lua_State *lua) {
lua_pushstring(lua,"sort");
lua_gettable(lua,-2); /* Stack: array, table, table.sort */
lua_pushvalue(lua,-3); /* Stack: array, table, table.sort, array */
- if (lua_pcall(lua,1,0,0)) {
- /* Stack: array, table, error */
-
- /* We are not interested in the error, we assume that the problem is
- * that there are 'false' elements inside the array, so we try
- * again with a slower function but able to handle this case, that
- * is: table.sort(table, __redis__compare_helper) */
- lua_pop(lua,1); /* Stack: array, table */
- lua_pushstring(lua,"sort"); /* Stack: array, table, sort */
- lua_gettable(lua,-2); /* Stack: array, table, table.sort */
- lua_pushvalue(lua,-3); /* Stack: array, table, table.sort, array */
- lua_getglobal(lua,"__redis__compare_helper");
- /* Stack: array, table, table.sort, array, __redis__compare_helper */
- lua_call(lua,2,0);
- }
+ lua_call(lua,1,0); /* Stack: array (sorted), table */
/* Stack: array (sorted), table */
lua_pop(lua,1); /* Stack: array (sorted) */
}
@@ -1256,18 +1242,6 @@ void scriptingInit(int setup) {
lua_setglobal(lua,"math");
- /* Add a helper function that we use to sort the multi bulk output of non
- * deterministic commands, when containing 'false' elements. */
- {
- char *compare_func = "function __redis__compare_helper(a,b)\n"
- " if a == false then a = '' end\n"
- " if b == false then b = '' end\n"
- " return a<b\n"
- "end\n";
- luaL_loadbuffer(lua,compare_func,strlen(compare_func),"@cmp_func_def");
- lua_pcall(lua,0,0,0);
- }
-
/* Add a helper function we use for pcall error reporting.
* Note that when the error is in the C function we want to report the
* information about the caller, that's what makes sense from the point