• Oran Agra's avatar
    Cleanup around script_caller, fix tracking of scripts and ACL logging for RM_Call (#11770) · 233abbbe
    Oran Agra authored
    * 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)
    233abbbe
eval.c 59.9 KB