自上次 Redis 更新后 Lua 脚本出错

Error in Lua script since last Redis update

自 Redis 6.2.7(和 Redis 7)以来,现有的 Lua 脚本停止工作并显示错误消息:

“错误 user_script:6:尝试修改只读 table 脚本:2f405679dab26da46ec86d29bded48f66a99ff64,@user_script:6。”

该脚本在 Redis 6.2.6 上运行良好。我在最新的 Redis 发行说明中没有发现任何重大更改。

有线索吗?谢谢!!

这是脚本:

-- returns valid task ID if successfull, nil if no tasks

local tenantId = unpack(ARGV)
local activeTenantsSet, activeTenantsList, tenantQueue = unpack(KEYS)

-- next task lua based function - return nil or taskId
function next ()
    local task = redis.call('ZPOPMAX', tenantQueue)
    if table.getn(task) == 0 then
        redis.call('SREM', activeTenantsSet, tenantId)
        redis.call('LREM', activeTenantsList, 0, tenantId)
        return nil
    end
    redis.call('SADD', activeTenantsSet, tenantId)
    redis.call('RPUSH', activeTenantsList, tenantId)
    return task[1]
end

-------------
return next()

尝试在 'function next'

前面添加 'local'
local function next ()
...