• antirez's avatar
    Refactoring: improve luaCreateFunction() API. · 60d26acf
    antirez authored
    The function in its initial form, and after the fixes for the PSYNC2
    bugs, required code duplication in multiple spots. This commit modifies
    it in order to always compute the script name independently, and to
    return the SDS of the SHA of the body: this way it can be used in all
    the places, including for SCRIPT LOAD, without duplicating the code to
    create the Lua function name. Note that this requires to re-compute the
    body SHA1 in the case of EVAL seeing a script for the first time, but
    this should not change scripting performance in any way because new
    scripts definition is a rare event happening the first time a script is
    seen, and the SHA1 computation is anyway not a very slow process against
    the typical Redis script and compared to the actua Lua byte compiling of
    the body.
    
    Note that the function used to assert() if a duplicated script was
    loaded, however actually now two times over three, we want the function
    to handle duplicated scripts just fine: this happens in SCRIPT LOAD and
    in RDB AUX "lua" loading. Moreover the assert was not defending against
    some obvious failure mode, so now the function always tests against
    already defined functions at start.
    60d26acf
scripting.c 85.3 KB