summaryrefslogtreecommitdiff
path: root/src/script.c
diff options
context:
space:
mode:
authorOran Agra <oran@redislabs.com>2023-02-16 08:07:35 +0200
committerGitHub <noreply@github.com>2023-02-16 08:07:35 +0200
commit233abbbe03211ca700e10f827d289da24d9bd7e3 (patch)
tree8c258ab7e81d883efb7b684ef8841bd70f705e9e /src/script.c
parenta35e08370ac467736328ee5ceed1292cbb2e05db (diff)
downloadredis-233abbbe03211ca700e10f827d289da24d9bd7e3.tar.gz
Cleanup around script_caller, fix tracking of scripts and ACL logging for RM_Call (#11770)
* Make it clear that current_client is the root client that was called by external connection * add executing_client which is the client that runs the current command (can be a module or a script) * Remove script_caller that was used for commands that have CLIENT_SCRIPT to get the client that called the script. in most cases, that's the current_client, and in others (when being called from a module), it could be an intermediate client when we actually want the original one used by the external connection. bugfixes: * RM_Call with C flag should log ACL errors with the requested user rather than the one used by the original client, this also solves a crash when RM_Call is used with C flag from a detached thread safe context. * addACLLogEntry would have logged info about the script_caller, but in case the script was issued by a module command we actually want the current_client. the exception is when RM_Call is called from a timer event, in which case we don't have a current_client. behavior changes: * client side tracking for scripts now tracks the keys that are read by the script instead of the keys that are declared by the caller for EVAL other changes: * Log both current_client and executing_client in the crash log. * remove prepareLuaClient and resetLuaClient, being dead code that was forgotten. * remove scriptTimeSnapshot and snapshot_time and instead add cmd_time_snapshot that serves all commands and is reset only when execution nesting starts. * remove code to propagate CLIENT_FORCE_REPL from the executed command to the script caller since scripts aren't propagated anyway these days and anyway this flag wouldn't have had an effect since CLIENT_PREVENT_PROP is added by scriptResetRun. * fix a module GIL violation issue in afterSleep that was introduced in #10300 (unreleased)
Diffstat (limited to 'src/script.c')
-rw-r--r--src/script.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/src/script.c b/src/script.c
index fd47e390e..f7b70bcae 100644
--- a/src/script.c
+++ b/src/script.c
@@ -212,7 +212,6 @@ int scriptPrepareForRun(scriptRunCtx *run_ctx, client *engine_client, client *ca
client *script_client = run_ctx->c;
client *curr_client = run_ctx->original_client;
- server.script_caller = curr_client;
/* Select the right DB in the context of the Lua client */
selectDb(script_client, curr_client->db->id);
@@ -224,7 +223,6 @@ int scriptPrepareForRun(scriptRunCtx *run_ctx, client *engine_client, client *ca
}
run_ctx->start_time = getMonotonicUs();
- run_ctx->snapshot_time = mstime();
run_ctx->flags = 0;
run_ctx->repl_flags = PROPAGATE_AOF | PROPAGATE_REPL;
@@ -257,8 +255,6 @@ void scriptResetRun(scriptRunCtx *run_ctx) {
/* After the script done, remove the MULTI state. */
run_ctx->c->flags &= ~CLIENT_MULTI;
- server.script_caller = NULL;
-
if (scriptIsTimedout()) {
exitScriptTimedoutMode(run_ctx);
/* Restore the client that was protected when the script timeout
@@ -575,12 +571,6 @@ error:
incrCommandStatsOnError(cmd, ERROR_COMMAND_REJECTED);
}
-/* Returns the time when the script invocation started */
-mstime_t scriptTimeSnapshot() {
- serverAssert(curr_run_ctx);
- return curr_run_ctx->snapshot_time;
-}
-
long long scriptRunDuration() {
serverAssert(scriptIsRunning());
return elapsedMs(curr_run_ctx->start_time);