Redis-CappedCollection v1.10 Perl 5 v5.39.10 x86_64-linux

Status
Fail
From
Andreas J. König (ANDK)
Dist
Redis-CappedCollection v1.10
Platform
Perl 5 v5.39.10 x86_64-linux
Date
2024-05-07 01:10:42
ID
a03e5c1e-0c0e-11ef-bb0c-a43e693db97c
This distribution has been tested as part of the CPAN Testers
project, supporting the Perl programming language.  See
http://wiki.cpantesters.org/ for more information or email
questions to cpan-testers-discuss@perl.org


--
Dear Sergey Gladkov,

This is a computer-generated report for Redis-CappedCollection-1.10
on perl 5.39.10, created by CPAN-Reporter-1.2019.

Thank you for uploading your work to CPAN.  However, there was a problem
testing your distribution.

If you think this report is invalid, please consult the CPAN Testers Wiki
for suggestions on how to avoid getting FAIL reports for missing library
or binary dependencies, unsupported operating systems, and so on:

http://wiki.cpantesters.org/wiki/CPANAuthorNotes

Sections of this report:

    * Tester comments
    * Program output
    * Prerequisites
    * Environment and other context

------------------------------
TESTER COMMENTS
------------------------------

Additional comments from tester:

this report is from an automated smoke testing program
and was not reviewed by a human for accuracy

------------------------------
PROGRAM OUTPUT
------------------------------

Output from '/usr/bin/make test':

PERL_DL_NONLAZY=1 "/tmp/basesmoker-reloperl-wJoB/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/00_compile.t t/00_CappedCollection/00_compile.t t/00_CappedCollection/01_new.t t/00_CappedCollection/02_insert.t t/00_CappedCollection/03_update.t t/00_CappedCollection/04_receive.t t/00_CappedCollection/05_collection_info.t t/00_CappedCollection/06_pop_oldest.t t/00_CappedCollection/07_exists.t t/00_CappedCollection/08_lists.t t/00_CappedCollection/09_drop_collection.t t/00_CappedCollection/10_quit.t t/00_CappedCollection/11_max_datasize.t t/00_CappedCollection/12_last_errorcode.t t/00_CappedCollection/13_name.t t/00_CappedCollection/14_max_list_items.t t/00_CappedCollection/15_cleanup_bytes.t t/00_CappedCollection/17_cleanup_items.t t/00_CappedCollection/18_info.t t/00_CappedCollection/19_drop.t t/00_CappedCollection/20_cleaning.t t/00_CappedCollection/21_rollback.t t/00_CappedCollection/22_alarm.t t/00_CappedCollection/23_cleaning_bench.t t/00_CappedCollection/24_timeout.t t/00_CappedCollection/25_cleaning_correctness.t t/00_CappedCollection/26_script_variable_protection.t t/00_CappedCollection/27_fork.t t/00_CappedCollection/28_data_dependency.t

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/00_compile.t line 17
# 	main::BEGIN() called at t/00_CappedCollection/00_compile.t line 17
# 	eval {...} called at t/00_CappedCollection/00_compile.t line 17
# 	eval 'package main;
# BEGIN { ${^WARNING_BITS} = $args[-1] if defined $args[-1] }
# #line 17 t/00_CappedCollection/00_compile.t
# use Redis::CappedCollection @{$args[0]};
# 1;
# ' called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/More.pm line 1056
# 	Test::More::_eval("package main;\x{a}BEGIN { \${^WARNING_BITS} = \$args[-1] if defined"..., ARRAY(0x56240ebee1b8), "UUUUUUUUUUUUUUUUUUUU") called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/More.pm line 1031
# 	Test::More::use_ok("Redis::CappedCollection") called at t/00_CappedCollection/00_compile.t line 17
# 	main::BEGIN() called at t/00_CappedCollection/00_compile.t line 17
# 	eval {...} called at t/00_CappedCollection/00_compile.t line 17
# 
# Looks like you failed 1 test of 34.
t/00_CappedCollection/00_compile.t ..................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/34 subtests 
# Unable to create test Redis server

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/01_new.t line 42
# 	main::BEGIN() called at t/00_CappedCollection/01_new.t line 42
# 	eval {...} called at t/00_CappedCollection/01_new.t line 42
# 
# Looks like you failed 1 test of 2.
t/00_CappedCollection/01_new.t ......................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/2 subtests 
	(less 1 skipped subtest: 0 okay)
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/02_insert.t line 41
# 	main::BEGIN() called at t/00_CappedCollection/02_insert.t line 41
# 	eval {...} called at t/00_CappedCollection/02_insert.t line 41
# 
# Looks like your test exited with -1 just after 8.
t/00_CappedCollection/02_insert.t ...................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/03_update.t line 36
# 	main::BEGIN() called at t/00_CappedCollection/03_update.t line 36
# 	eval {...} called at t/00_CappedCollection/03_update.t line 36
# 
# Looks like your test exited with -1 just after 8.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/03_update.t ...................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/04_receive.t line 36
# 	main::BEGIN() called at t/00_CappedCollection/04_receive.t line 36
# 	eval {...} called at t/00_CappedCollection/04_receive.t line 36
# 
# Looks like your test exited with -1 just after 7.
t/00_CappedCollection/04_receive.t ..................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/7 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/05_collection_info.t line 41
# 	main::BEGIN() called at t/00_CappedCollection/05_collection_info.t line 41
# 	eval {...} called at t/00_CappedCollection/05_collection_info.t line 41
# 
# Looks like your test exited with -1 just after 36.
t/00_CappedCollection/05_collection_info.t ............. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/36 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/06_pop_oldest.t line 41
# 	main::BEGIN() called at t/00_CappedCollection/06_pop_oldest.t line 41
# 	eval {...} called at t/00_CappedCollection/06_pop_oldest.t line 41
# 
# Looks like your test exited with -1 just after 8.
t/00_CappedCollection/06_pop_oldest.t .................. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/07_exists.t line 36
# 	main::BEGIN() called at t/00_CappedCollection/07_exists.t line 36
# 	eval {...} called at t/00_CappedCollection/07_exists.t line 36
# 
# Looks like your test exited with -1 just after 23.
t/00_CappedCollection/07_exists.t ...................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/23 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/08_lists.t line 36
# 	main::BEGIN() called at t/00_CappedCollection/08_lists.t line 36
# 	eval {...} called at t/00_CappedCollection/08_lists.t line 36
# 
# Looks like your test exited with -1 just after 8.
t/00_CappedCollection/08_lists.t ....................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/09_drop_collection.t line 40
# 	main::BEGIN() called at t/00_CappedCollection/09_drop_collection.t line 40
# 	eval {...} called at t/00_CappedCollection/09_drop_collection.t line 40
# 
# Looks like your test exited with -1 just after 8.
t/00_CappedCollection/09_drop_collection.t ............. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/10_quit.t line 39
# 	main::BEGIN() called at t/00_CappedCollection/10_quit.t line 39
# 	eval {...} called at t/00_CappedCollection/10_quit.t line 39
# 
# Looks like your test exited with -1 just after 8.
t/00_CappedCollection/10_quit.t ........................ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/8 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/11_max_datasize.t line 41
# 	main::BEGIN() called at t/00_CappedCollection/11_max_datasize.t line 41
# 	eval {...} called at t/00_CappedCollection/11_max_datasize.t line 41
# 
# Looks like your test exited with -1 just after 21.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/11_max_datasize.t ................ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/21 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Redis.pm line 321.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/12_last_errorcode.t line 50
# 	main::BEGIN() called at t/00_CappedCollection/12_last_errorcode.t line 50
# 	eval {...} called at t/00_CappedCollection/12_last_errorcode.t line 50
# 
# Looks like your test exited with -1 just after 11.
t/00_CappedCollection/12_last_errorcode.t .............. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/11 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/13_name.t line 38
# 	main::BEGIN() called at t/00_CappedCollection/13_name.t line 38
# 	eval {...} called at t/00_CappedCollection/13_name.t line 38
# 
# Looks like your test exited with -1 just after 14.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/13_name.t ........................ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/14 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/14_max_list_items.t line 43
# 	main::BEGIN() called at t/00_CappedCollection/14_max_list_items.t line 43
# 	eval {...} called at t/00_CappedCollection/14_max_list_items.t line 43
# 
# Looks like your test exited with -1 just after 12.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/14_max_list_items.t .............. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/12 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/15_cleanup_bytes.t line 39
# 	main::BEGIN() called at t/00_CappedCollection/15_cleanup_bytes.t line 39
# 	eval {...} called at t/00_CappedCollection/15_cleanup_bytes.t line 39
# 
# Looks like your test exited with -1 just after 14.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/15_cleanup_bytes.t ............... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/14 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/17_cleanup_items.t line 42
# 	main::BEGIN() called at t/00_CappedCollection/17_cleanup_items.t line 42
# 	eval {...} called at t/00_CappedCollection/17_cleanup_items.t line 42
# 
# Looks like your test exited with -1 just after 26.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/17_cleanup_items.t ............... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/26 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/18_info.t line 40
# 	main::BEGIN() called at t/00_CappedCollection/18_info.t line 40
# 	eval {...} called at t/00_CappedCollection/18_info.t line 40
# 
# Looks like your test exited with -1 just after 9.
t/00_CappedCollection/18_info.t ........................ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/9 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/19_drop.t line 40
# 	main::BEGIN() called at t/00_CappedCollection/19_drop.t line 40
# 	eval {...} called at t/00_CappedCollection/19_drop.t line 40
# 
# Looks like your test exited with -1 just after 6.
t/00_CappedCollection/19_drop.t ........................ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/6 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/20_cleaning.t line 55
# 	main::BEGIN() called at t/00_CappedCollection/20_cleaning.t line 55
# 	eval {...} called at t/00_CappedCollection/20_cleaning.t line 55
# 
# Looks like your test exited with -1 just after 7.
t/00_CappedCollection/20_cleaning.t .................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/7 subtests 

#   Failed test 'Error adding data: [EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- adding data to a list of collections
# collectgarbage( 'stop' )
# 
# local coll_name             = ARGV[2]
# local list_id               = ARGV[3]
# local data_id               = ARGV[4]
# local data                  = ARGV[5]
# local data_time             = tonumber( ARGV[6] )
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# local DATA_KEYS  = NAMESPACE..':D:'..coll_name
# local TIME_KEYS  = NAMESPACE..':T:'..coll_name
# local DATA_KEY   = DATA_KEYS..':'..list_id
# local TIME_KEY   = TIME_KEYS..':'..list_id
# local REDIS_USED_MEMORY                     = 0
# local REDIS_MAXMEMORY                       = 0
# local ROLLBACK                              = {}
# local TOTAL_BYTES_DELETED                   = 0
# local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
# local LAST_CLEANUP_ITEMS                    = 0
# local LAST_OPERATION                        = ''
# local INSERTS_SINCE_CLEANING                = 0
# local UPDATES_SINCE_CLEANING                = 0
# 
# local _DEBUG, _DEBUG_ID, _FUNC_NAME
# 
# local table_merge = function ( t1, t2 )
#     for key, val in pairs( t2 ) do
#         t1[ key ] = val
#     end
# end
# 
# local _debug_log = function ( values )
#     table_merge( values, {
#         _DEBUG_ID                   = _DEBUG_ID,
#         _FUNC_NAME                  = _FUNC_NAME,
#         REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
#         list_id                     = list_id,
#         data_id                     = data_id,
#         data_len                    = #data,
#         ROLLBACK                    = ROLLBACK
#     } )
# 
#     redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
# end
# 
# local _setup = function ( argv_idx, func_name, extra_data_len )
#     LAST_OPERATION = func_name
# 
#     REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
#     local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )
# 
#     local redis_used_memory = string.match(
#         redis.call( 'INFO', 'memory' ),
#         'used_memory:(%d+)'
#     )
#     REDIS_USED_MEMORY = tonumber( redis_used_memory )
#     LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
#     if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
#         LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
#     end
# 
#     INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
#     if INSERTS_SINCE_CLEANING == nil then
#         INSERTS_SINCE_CLEANING = 0
#     end
#     UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
#     if UPDATES_SINCE_CLEANING == nil then
#         UPDATES_SINCE_CLEANING = 0
#     end
# 
#     _FUNC_NAME  = func_name
#     _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
#     if _DEBUG_ID ~= 0 then
#         _DEBUG = true
#         _debug_log( {
#             _STEP                   = '_setup',
#             maxmemory               = REDIS_MAXMEMORY,
#             redis_used_memory       = REDIS_USED_MEMORY,
#             bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
#         } )
#     else
#         _DEBUG = false
#     end
# end
# 
# local renew_last_cleanup_values = function ()
#     if LAST_CLEANUP_ITEMS > 0 then
#         local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
#         local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
#         if #last_cleanup_bytes_values >= 10 then
#             table.remove ( last_cleanup_bytes_values, 1 )
#             table.remove ( last_cleanup_items_values, 1 )
#         end
#         table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
#         table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
#         redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
#         redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
#     end
# end
# 
# local cleaning_error = function ( error_msg )
#     if _DEBUG then
#         _debug_log( {
#             _STEP       = 'cleaning_error',
#             error_msg   = error_msg
#         } )
#     end
# 
#     for _, rollback_command in ipairs( ROLLBACK ) do
#         redis.call( unpack( rollback_command ) )
#     end
#     -- Level 2 points the error to where the function that called error was called
#     renew_last_cleanup_values()
#     error( error_msg, 2 )
# end
# 
# -- deleting old data to make room for new data
# local cleaning = function ( list_id, data_id, is_cleaning_needed )
#     local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )
# 
#     if coll_items == 0 then
#         return
#     end
# 
#     local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
#     local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )
# 
#     if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
#         return
#     end
# 
#     if _DEBUG then
#         _debug_log( {
#             _STEP           = 'Before cleanings',
#             coll_items      = coll_items,
#             cleanup_items   = cleanup_items,
#             cleanup_bytes   = cleanup_bytes,
#         } )
#     end
# 
#     local items_deleted = 0
#     local bytes_deleted = 0
#     local lists_deleted = 0
# 
#     repeat
#         if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
#             -- Level 2 points the error to where the function that called error was called
#             renew_last_cleanup_values()
#             error( 'Queue key does not exist', 2 )
#         end
# 
#         -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
#         local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
#         last_removed_time = tonumber( last_removed_time )
#         -- key data structures
#         local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
#         local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id
# 
#         -- looking for the oldest data
#         local to_delete_data_id
#         local to_delete_data
#         local items = redis.call( 'HLEN', to_delete_data_key )
# -- #FIXME: to_delete_data -> to_delete_data_len
# -- HSTRLEN key field
# -- Available since 3.2.0.
#         if items == 1 then
#             to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
#         else
#             to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
#             to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
#         end
#         local to_delete_data_len = #to_delete_data
#         to_delete_data = nil    -- free memory
# 
#         if _DEBUG then
#             _debug_log( {
#                 _STEP               = 'Before real cleaning',
#                 items               = items,
#                 to_delete_list_id   = to_delete_list_id,
#                 to_delete_data_id   = to_delete_data_id,
#                 to_delete_data_len  = to_delete_data_len
#             } )
#         end
# 
#         if to_delete_list_id == list_id and to_delete_data_id == data_id then
#             if items_deleted == 0 then
#                 -- Its first attempt to clean the conflicting data, for which the primary operation executed.
#                 -- In this case, we are roll back operations that have been made before, and immediately return an error,
#                 -- shifting the handling of such errors on the client.
#                 cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
#             end
#             break
#         end
# 
#         if _DEBUG then
#             _debug_log( {
#                 _STEP           = 'Why it is cleared?',
#                 coll_items      = coll_items,
#                 cleanup_bytes   = cleanup_bytes,
#                 cleanup_items   = cleanup_items,
#                 items_deleted   = items_deleted,
#                 bytes_deleted   = bytes_deleted,
#             } )
#         end
# 
#         -- actually remove the oldest item
#         redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
#         items = items - 1
#         coll_items = coll_items - 1
# 
#         redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )
# 
#         if items > 0 then
#             -- If the list has more data
#             redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
#             local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
#             redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )
# 
#             if items == 1 then
#                 redis.call( 'DEL', to_delete_time_key )
#             end
#         else
#             -- If the list does not have data
#             -- remove the name of the list from the queue collection
#             redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
#             lists_deleted = lists_deleted + 1
#         end
# 
#         -- amount of data collection decreased
#         items_deleted = items_deleted + 1
#         bytes_deleted = bytes_deleted + to_delete_data_len
# 
#         if _DEBUG then
#             _debug_log( {
#                 _STEP               = 'After real cleaning',
#                 to_delete_data_key  = to_delete_data_key,
#                 to_delete_data_id   = to_delete_data_id,
#                 items               = items,
#                 items_deleted       = items_deleted,
#                 bytes_deleted       = bytes_deleted,
#             } )
#         end
# 
#     until
#             coll_items <= 0
#         or (
#                 items_deleted >= cleanup_items
#             and bytes_deleted >= cleanup_bytes
#         )
# 
#     if items_deleted > 0 then
#         -- reduce the number of items in the collection
#         redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
#     end
#     if lists_deleted > 0 then
#         -- reduce the number of lists stored in a collection
#         redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
#     end
# 
#     if _DEBUG then
#         _debug_log( {
#             _STEP           = 'Cleaning finished',
#             items_deleted   = items_deleted,
#             bytes_deleted   = bytes_deleted,
#             lists_deleted   = lists_deleted,
#             cleanup_bytes   = cleanup_bytes,
#             cleanup_items   = cleanup_items,
#             coll_items      = coll_items,
#         } )
#     end
# 
#     if bytes_deleted > 0 then
#         if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
#             INSERTS_SINCE_CLEANING = 0
#             redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
#             UPDATES_SINCE_CLEANING = 0
#             redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
#         end
# 
#         TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
#         LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted
# 
#         -- information values
#         redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
#         redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
#         redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
#     end
# end
# 
# local call_with_error_control = function ( list_id, data_id, ... )
#     local retries = 2
#     local ret
#     local error_msg = '<Empty error message>'
#     repeat
#         ret = redis.pcall( ... )
#         if type( ret ) == 'table' and ret.err ~= nil then
#             error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
#             if _DEBUG then
#                 _debug_log( {
#                     _STEP       = 'call_with_error_control',
#                     error_msg   = error_msg,
#                     retries     = retries
#                 } )
#             end
# 
#             cleaning( list_id, data_id, true )
#         else
#             break
#         end
#         retries = retries - 1
#     until retries == 0
# 
#     if retries == 0 then
#         -- Operation returned an error related to insufficient memory.
#         -- Start cleaning process and then re-try operation.
#         -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
#         -- if it still did not work.
#         cleaning_error( error_msg )
#     end
# 
#     return ret
# end
# 
# 
# -- determine whether there is a list of data and a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, 0, 0, 0 }
# end
# 
# local reduce_list_items = function ( list_id )
#     local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
#     if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
#         local list_items        = redis.call( 'HLEN', DATA_KEY )
#         local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
#         local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )
# 
#         while list_items >= max_list_items do
#             local removed_data_time, removed_data_id
#             list_items = list_items - 1
# 
#             if list_items == 0 then
#                 removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
#                 redis.call( 'ZREM', QUEUE_KEY, list_id )
#                 redis.call( 'DEL', DATA_KEY )
#                 redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
#             else
#                 removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
#                 removed_data_id     = tonumber( removed_data_id )
#                 removed_data_time   = tonumber( removed_data_time )
#                 redis.call( 'ZREM', TIME_KEY, removed_data_id )
#                 redis.call( 'HDEL', DATA_KEY, removed_data_id )
# 
#                 local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
#                 redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )
# 
#                 if redis.call( 'HLEN', DATA_KEY ) == 1 then
#                     redis.call( 'DEL', TIME_KEY )
#                 end
#             end
# 
#             redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )
# 
#             if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
#                 redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
#                 last_removed_time = removed_data_time
#             end
#         end
#     end
# end
# 
# reduce_list_items( list_id )
# 
# 
# -- verification of the existence of old data with new data identifier
# if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
#     return { -1008, 0, 0, 0 }
# end
# 
# -- Validating the time of new data, if required
# local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )
# 
# if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
#     if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
#         if data_time < last_removed_time then
#             return { -1009, 0, 0, 0 }
#         end
#     end
# end
# 
# -- deleting obsolete data, if it is necessary
# local data_len = #data
# _setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
# cleaning( list_id, data_id, false )
# 
# -- add data to the list
# -- Remember that the list and the collection can be automatically deleted after the "crowding out" old data
# 
# -- the existing data
# local items = redis.call( 'HLEN', DATA_KEY )
# local existing_id, existing_time
# if items == 1 then
#     existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
#     existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
# end
# 
# -- actually add data to the list
# call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
# data = nil  -- free memory
# table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )
# 
# if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
#     redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
#     table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
#     call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
# else
#     if items == 1 then
#         call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
#         table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
#     end
#     call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
#     local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
#     redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
# end
# 
# -- reflect the addition of new data
# redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
# if data_time < last_removed_time then
#     redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
# end
# 
# renew_last_cleanup_values()
# -- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
# INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
# redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
# return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }
# 
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#   at t/00_CappedCollection/21_rollback.t line 209.

#   Failed test 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET',

[Output truncated because it exceeded 1000K]

ion/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569726a5588), Try::Tiny::Catch=REF(0x556972726440)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7486 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972726800), Try::Tiny::Catch=REF(0x5569726a3b98)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7488 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697272dc40), Try::Tiny::Catch=REF(0x55697272e330)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7490 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972729d88), Try::Tiny::Catch=REF(0x5569727266b0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7492 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727331f0), Try::Tiny::Catch=REF(0x55697272ffd8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7494 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727330e8), Try::Tiny::Catch=REF(0x55697273afd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7496 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697273d6f0), Try::Tiny::Catch=REF(0x55697273d900)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7498 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972740990), Try::Tiny::Catch=REF(0x5569727bc6c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7500 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972741278), Try::Tiny::Catch=REF(0x5569727c47a0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7502 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972743c38), Try::Tiny::Catch=REF(0x5569727c7550)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7504 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972746688), Try::Tiny::Catch=REF(0x5569727460a0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7506 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727ce510), Try::Tiny::Catch=REF(0x5569727ce450)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7508 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727d1460), Try::Tiny::Catch=REF(0x5569727cac28)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7510 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727d21c8), Try::Tiny::Catch=REF(0x5569727d2108)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7512 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727d6878), Try::Tiny::Catch=REF(0x5569727d67b8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7514 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727db308), Try::Tiny::Catch=REF(0x5569727d6398)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7516 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727dd928), Try::Tiny::Catch=REF(0x5569727dd868)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7518 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727e0d18), Try::Tiny::Catch=REF(0x5569727dd448)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7520 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727e4d88), Try::Tiny::Catch=REF(0x5569727e0838)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7522 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727e7ff8), Try::Tiny::Catch=REF(0x5569727e15a0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7524 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727e8d60), Try::Tiny::Catch=REF(0x5569727e8ca0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7526 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727ec1a0), Try::Tiny::Catch=REF(0x5569727ec0e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7528 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727f09c0), Try::Tiny::Catch=REF(0x5569727f0b88)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7530 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727f3f80), Try::Tiny::Catch=REF(0x5569727f04e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7532 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727f7d50), Try::Tiny::Catch=REF(0x5569727f7c90)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7534 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727fb600), Try::Tiny::Catch=REF(0x5569727fb540)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7536 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727fc368), Try::Tiny::Catch=REF(0x5569727fc2a8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7538 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727fe538), Try::Tiny::Catch=REF(0x5569727fbe88)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7540 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972801f88), Try::Tiny::Catch=REF(0x556972802150)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7542 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728089a8), Try::Tiny::Catch=REF(0x556972801aa8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7544 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697280bbf8), Try::Tiny::Catch=REF(0x55697280bdc0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7546 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697280e218), Try::Tiny::Catch=REF(0x55697280e158)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7548 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972811398), Try::Tiny::Catch=REF(0x5569728112d8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7550 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972812100), Try::Tiny::Catch=REF(0x5569728149e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7552 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972815580), Try::Tiny::Catch=REF(0x5569728154c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7554 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972818c40), Try::Tiny::Catch=REF(0x556972818b80)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7556 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697281dd00), Try::Tiny::Catch=REF(0x556972818760)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7558 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972820320), Try::Tiny::Catch=REF(0x5569728204e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7560 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728237f0), Try::Tiny::Catch=REF(0x55697281e588)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7562 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972824558), Try::Tiny::Catch=REF(0x556972820ba8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7564 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972828ec8), Try::Tiny::Catch=REF(0x556972829090)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7566 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697282c708), Try::Tiny::Catch=REF(0x5569728289e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7568 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972830618), Try::Tiny::Catch=REF(0x5569728307e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7570 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972834098), Try::Tiny::Catch=REF(0x556972833fd8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7572 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972837d08), Try::Tiny::Catch=REF(0x556972837c48)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7574 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283a8b8), Try::Tiny::Catch=REF(0x55697283a7f8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7576 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283b620), Try::Tiny::Catch=REF(0x556972838590)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7578 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972840080), Try::Tiny::Catch=REF(0x55697283ffc0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7580 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728429a0), Try::Tiny::Catch=REF(0x556972842b68)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7582 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972845a00), Try::Tiny::Catch=REF(0x556972845940)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7584 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697284a8f0), Try::Tiny::Catch=REF(0x55697284aab8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7586 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697284ce90), Try::Tiny::Catch=REF(0x55697284cdd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7588 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697284dbf8), Try::Tiny::Catch=REF(0x5569728521b8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7590 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972852d58), Try::Tiny::Catch=REF(0x556972852f20)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7592 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972855d48), Try::Tiny::Catch=REF(0x556972855c88)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7594 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972858b08), Try::Tiny::Catch=REF(0x556972858a48)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7596 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697285c628), Try::Tiny::Catch=REF(0x556972858628)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7598 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972861888), Try::Tiny::Catch=REF(0x5569728617c8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7600 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972864cb8), Try::Tiny::Catch=REF(0x556972864bf8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7602 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972865a20), Try::Tiny::Catch=REF(0x5569727d1460)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7604 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972868c50), Try::Tiny::Catch=REF(0x5569727dd598)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7606 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697286bce0), Try::Tiny::Catch=REF(0x55697286bc20)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7608 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697286eb80), Try::Tiny::Catch=REF(0x55697286eac0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7610 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972871170), Try::Tiny::Catch=REF(0x5569728710b0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7612 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972877180), Try::Tiny::Catch=REF(0x5569728770c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7614 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972877ee8), Try::Tiny::Catch=REF(0x5569727f0498)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7616 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697287ce18), Try::Tiny::Catch=REF(0x55697287cfe0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7618 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972880058), Try::Tiny::Catch=REF(0x556972880220)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7620 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972882ef8), Try::Tiny::Catch=REF(0x556972882e38)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7622 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972886728), Try::Tiny::Catch=REF(0x556972886668)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7624 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972888778), Try::Tiny::Catch=REF(0x5569727fe1c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7626 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697288dc18), Try::Tiny::Catch=REF(0x55697288dde0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7628 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697288e980), Try::Tiny::Catch=REF(0x55697288e8c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7630 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972891ed0), Try::Tiny::Catch=REF(0x556972892098)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7632 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972895cb0), Try::Tiny::Catch=REF(0x556972895bf0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7634 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972899280), Try::Tiny::Catch=REF(0x5569728991c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7636 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697289b220), Try::Tiny::Catch=REF(0x55697289b3e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7638 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697289ed60), Try::Tiny::Catch=REF(0x55697289eca0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7640 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697289fac8), Try::Tiny::Catch=REF(0x5569728a47f8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7642 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728a5398), Try::Tiny::Catch=REF(0x5569728a52d8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7644 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728a9c78), Try::Tiny::Catch=REF(0x5569728a5218)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7646 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728ac868), Try::Tiny::Catch=REF(0x5569728aca30)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7648 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728b0558), Try::Tiny::Catch=REF(0x556972823fb8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7650 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728b3118), Try::Tiny::Catch=REF(0x556972828f88)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7652 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728237f0), Try::Tiny::Catch=REF(0x55697271b820)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7654 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972824558), Try::Tiny::Catch=REF(0x556972833cf0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7656 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972837e10), Try::Tiny::Catch=REF(0x556972834260)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7658 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972837a68), Try::Tiny::Catch=REF(0x5569728c0518)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7660 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283b788), Try::Tiny::Catch=REF(0x556972838350)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7662 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283b320), Try::Tiny::Catch=REF(0x5569728c4468)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7664 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283fed0), Try::Tiny::Catch=REF(0x556972842a78)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7666 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728459e8), Try::Tiny::Catch=REF(0x5569728c8150)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7668 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283ffc0), Try::Tiny::Catch=REF(0x5569726c0170)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7670 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697284b1c0), Try::Tiny::Catch=REF(0x55697284a488)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7672 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697284b0e8), Try::Tiny::Catch=REF(0x55697284b3e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7674 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972852e00), Try::Tiny::Catch=REF(0x556972852fc8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7676 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972852f80), Try::Tiny::Catch=REF(0x556972855cd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7678 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727d13a0), Try::Tiny::Catch=REF(0x556972858d90)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7680 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569727d63e0), Try::Tiny::Catch=REF(0x5569728e24e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7682 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972861af8), Try::Tiny::Catch=REF(0x5569728e3250)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7684 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972864c40), Try::Tiny::Catch=REF(0x5569728e2e30)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7686 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972865a38), Try::Tiny::Catch=REF(0x5569728e8150)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7688 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728ef600), Try::Tiny::Catch=REF(0x5569728eb970)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7690 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728f2620), Try::Tiny::Catch=REF(0x5569728f2560)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7692 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728f59a0), Try::Tiny::Catch=REF(0x5569728f58e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7694 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728f8bb0), Try::Tiny::Catch=REF(0x5569728f6648)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7696 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728f9918), Try::Tiny::Catch=REF(0x5569727ec1b8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7698 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728fe1a8), Try::Tiny::Catch=REF(0x5569728fe0e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7700 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729042a8), Try::Tiny::Catch=REF(0x5569729041e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7702 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972906b48), Try::Tiny::Catch=REF(0x556972903dc8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7704 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972909f58), Try::Tiny::Catch=REF(0x556972909e98)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7706 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697290bf58), Try::Tiny::Catch=REF(0x55697290be98)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7708 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697290ccc0), Try::Tiny::Catch=REF(0x55697290cc00)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7710 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697290f2e0), Try::Tiny::Catch=REF(0x55697290f220)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7712 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972916990), Try::Tiny::Catch=REF(0x55697290ee00)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7714 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972919580), Try::Tiny::Catch=REF(0x556972919748)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7716 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697291be90), Try::Tiny::Catch=REF(0x55697291bdd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7718 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697291fee0), Try::Tiny::Catch=REF(0x55697291b9b0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7720 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972922aa0), Try::Tiny::Catch=REF(0x556972920b88)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7722 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972923808), Try::Tiny::Catch=REF(0x556972923748)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7724 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972927898), Try::Tiny::Catch=REF(0x556972923328)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7726 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697292c2d8), Try::Tiny::Catch=REF(0x55697292c218)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7728 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697292f708), Try::Tiny::Catch=REF(0x55697292f8d0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7730 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729319d8), Try::Tiny::Catch=REF(0x556972931ba0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7732 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972936558), Try::Tiny::Catch=REF(0x556972936498)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7734 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729372c0), Try::Tiny::Catch=REF(0x556972937200)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7736 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697293a5e0), Try::Tiny::Catch=REF(0x55697293a7a8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7738 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697293da20), Try::Tiny::Catch=REF(0x55697293d960)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7740 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972941630), Try::Tiny::Catch=REF(0x556972941570)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7742 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972945400), Try::Tiny::Catch=REF(0x556972945340)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7744 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294a280), Try::Tiny::Catch=REF(0x55697294a1c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7746 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294c490), Try::Tiny::Catch=REF(0x55697294af28)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7748 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294d1f8), Try::Tiny::Catch=REF(0x55697294d138)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7750 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294fab8), Try::Tiny::Catch=REF(0x55697294fc80)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7752 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972953ba8), Try::Tiny::Catch=REF(0x556972953ae8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7754 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295a748), Try::Tiny::Catch=REF(0x55697295a688)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7756 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295cc18), Try::Tiny::Catch=REF(0x55697295cde0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7758 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295f9e8), Try::Tiny::Catch=REF(0x55697295afd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7760 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972960750), Try::Tiny::Catch=REF(0x55697295d4a0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7762 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972962a10), Try::Tiny::Catch=REF(0x556972960270)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7764 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729657a0), Try::Tiny::Catch=REF(0x5569729656e0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7766 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972968e80), Try::Tiny::Catch=REF(0x556972968dc0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7768 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972970180), Try::Tiny::Catch=REF(0x556972970348)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7770 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972973a20), Try::Tiny::Catch=REF(0x556972973960)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7772 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972976040), Try::Tiny::Catch=REF(0x5569729746c8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7774 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972976da8), Try::Tiny::Catch=REF(0x556972976ce8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7776 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697297a1a8), Try::Tiny::Catch=REF(0x55697297a370)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7778 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697297df98), Try::Tiny::Catch=REF(0x55697297ded8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7780 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972980148), Try::Tiny::Catch=REF(0x556972980088)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7782 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972985448), Try::Tiny::Catch=REF(0x556972985388)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7784 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729890b8), Try::Tiny::Catch=REF(0x556972988ff8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7786 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972989e20), Try::Tiny::Catch=REF(0x55697298bf10)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7788 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697298cab0), Try::Tiny::Catch=REF(0x55697298c9f0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7790 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972990e90), Try::Tiny::Catch=REF(0x556972990dd0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7792 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972993160), Try::Tiny::Catch=REF(0x556972993328)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7794 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972995d20), Try::Tiny::Catch=REF(0x55697290c108)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7796 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697299c380), Try::Tiny::Catch=REF(0x55697299c2c0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7798 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729a09f0), Try::Tiny::Catch=REF(0x55697299d028)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7800 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729a1758), Try::Tiny::Catch=REF(0x5569729a1698)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7802 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729a39f8), Try::Tiny::Catch=REF(0x5569729a3938)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7804 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729a7e48), Try::Tiny::Catch=REF(0x5569729a8010)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7806 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729aac48), Try::Tiny::Catch=REF(0x55697291be60)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7808 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729adc98), Try::Tiny::Catch=REF(0x5569729ade60)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7810 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729b4338), Try::Tiny::Catch=REF(0x5569729b4278)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7812 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729b50a0), Try::Tiny::Catch=REF(0x5569729b4fe0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7814 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729b7e50), Try::Tiny::Catch=REF(0x5569729b8018)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7816 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729b9ea0), Try::Tiny::Catch=REF(0x55697292f840)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7818 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729bdb30), Try::Tiny::Catch=REF(0x5569729bda70)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7820 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729bfb80), Try::Tiny::Catch=REF(0x5569729bd9b0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7822 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729c5c60), Try::Tiny::Catch=REF(0x5569729c5ba0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7824 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729c8eb0), Try::Tiny::Catch=REF(0x55697293a178)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7826 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729c9c18), Try::Tiny::Catch=REF(0x5569729ce1e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7828 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729ced88), Try::Tiny::Catch=REF(0x5569729c9a98)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7830 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729d1548), Try::Tiny::Catch=REF(0x5569729cec08)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7832 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972945d00), Try::Tiny::Catch=REF(0x556972949fb0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7834 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294c4f0), Try::Tiny::Catch=REF(0x55697294ef90)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7836 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294c520), Try::Tiny::Catch=REF(0x5569729d71f8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7838 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697294f560), Try::Tiny::Catch=REF(0x556972953b90)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7840 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295a670), Try::Tiny::Catch=REF(0x5569729def98)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7842 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295ce58), Try::Tiny::Catch=REF(0x556972953ae8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7844 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697295afa0), Try::Tiny::Catch=REF(0x5569729e7f08)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7846 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972960738), Try::Tiny::Catch=REF(0x55697295d710)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7848 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697283b620), Try::Tiny::Catch=REF(0x5569727c6f08)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7850 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972965308), Try::Tiny::Catch=REF(0x5569729edcc0)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7852 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569728dc588), Try::Tiny::Catch=REF(0x556972968f28)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7854 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972858c58), Try::Tiny::Catch=REF(0x5569729f39d8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7856 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729703a8), Try::Tiny::Catch=REF(0x556972973ca8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7858 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x5569729746b0), Try::Tiny::Catch=REF(0x556972973780)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7860 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972974518), Try::Tiny::Catch=REF(0x5569729744e8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7862 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972979e30), Try::Tiny::Catch=REF(0x556972a01368)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7864 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x55697297dfb0), Try::Tiny::Catch=REF(0x556972a04768)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7866 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972980280), Try::Tiny::Catch=REF(0x556972a08540)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7868 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a0be50), Try::Tiny::Catch=REF(0x556972a08120)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7870 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a11060), Try::Tiny::Catch=REF(0x5569728fe250)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7872 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a15630), Try::Tiny::Catch=REF(0x556972989148)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7874 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a18a50), Try::Tiny::Catch=REF(0x556972a18990)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7876 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a1b650), Try::Tiny::Catch=REF(0x556972a1b590)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7878 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a1f340), Try::Tiny::Catch=REF(0x556972a1f280)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7880 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a200a8), Try::Tiny::Catch=REF(0x556972a1ffe8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7882 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a21a28), Try::Tiny::Catch=REF(0x556972a1fbc8)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# ----------
#     Previous test 7884 'Error adding data: [EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.
# 
# Lua script 'insert':
# -- to obtain information on the status of the collection
# collectgarbage( 'stop' )
# 
# local coll_name     = ARGV[2]
# 
# -- key data storage structures
# local NAMESPACE  = 'C'
# local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
# local STATUS_KEY = NAMESPACE..':S:'..coll_name
# 
# -- determine whether there is a collection
# if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
#     return { -1006, false, false, false, false, false, false, false, false }
# end
# 
# local oldest_item_time = redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' )[2]
# local lists, items, older_allowed, cleanup_bytes, cleanup_items, max_list_items, memory_reserve, data_version, last_removed_time = unpack( redis.call( 'HMGET', STATUS_KEY,
#         'lists',
#         'items',
#         'older_allowed',
#         'cleanup_bytes',
#         'cleanup_items',
#         'max_list_items',
#         'memory_reserve',
#         'data_version',
#         'last_removed_time'
#     ) )
# 
# if type( data_version ) ~= 'string' then data_version = '0' end
# return {
#     -1000,
#     lists,
#     items,
#     older_allowed,
#     cleanup_bytes,
#     cleanup_items,
#     max_list_items,
#     memory_reserve,
#     data_version,
#     last_removed_time,
#     oldest_item_time
# }
#   at lib/Redis/CappedCollection.pm line 3800.
# '
#     Exiting subroutine via last at t/00_CappedCollection/21_rollback.t line 210.
#  at t/00_CappedCollection/21_rollback.t line 210.
# 	main::catch {...} ("[EVALSHA] ERR Error running script (call to f_5f3b2acfaa7e1eb"...) called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Try/Tiny.pm line 123
# 	Try::Tiny::try(CODE(0x556972a27c38), Try::Tiny::Catch=REF(0x556972a27b78)) called at t/00_CappedCollection/21_rollback.t line 211
# 
# Looks like you failed 3942 tests of 7887.
t/00_CappedCollection/21_rollback.t .................... 
Dubious, test returned 254 (wstat 65024, 0xfe00)
Failed 3942/7887 subtests 

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/22_alarm.t line 36
# 	main::BEGIN() called at t/00_CappedCollection/22_alarm.t line 36
# 	eval {...} called at t/00_CappedCollection/22_alarm.t line 36
# 
# Looks like you failed 1 test of 2.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/22_alarm.t ....................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/2 subtests 

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/23_cleaning_bench.t line 43
# 	main::BEGIN() called at t/00_CappedCollection/23_cleaning_bench.t line 43
# 	eval {...} called at t/00_CappedCollection/23_cleaning_bench.t line 43
# 
# Looks like you failed 1 test of 1.
t/00_CappedCollection/23_cleaning_bench.t .............. 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/24_timeout.t line 42
# 	main::BEGIN() called at t/00_CappedCollection/24_timeout.t line 42
# 	eval {...} called at t/00_CappedCollection/24_timeout.t line 42
# 
# Looks like your test exited with -1 just after 6.
	(in cleanup) Can't call method "current_test" on an undefined value at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/Test/NoWarnings/Warning.pm line 55 during global destruction.
t/00_CappedCollection/24_timeout.t ..................... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/6 subtests 
[EVAL] ERR Error running script (call to f_5f3b2acfaa7e1eb8a34554200774e9d9db851618): @user_script:53: @user_script: 53: This Redis command is not allowed from scripts ,  at lib/Redis/CappedCollection.pm line 3792.

Lua script 'insert':
-- adding data to a list of collections
collectgarbage( 'stop' )

local coll_name             = ARGV[2]
local list_id               = ARGV[3]
local data_id               = ARGV[4]
local data                  = ARGV[5]
local data_time             = tonumber( ARGV[6] )

-- key data storage structures
local NAMESPACE  = 'C'
local QUEUE_KEY  = NAMESPACE..':Q:'..coll_name
local STATUS_KEY = NAMESPACE..':S:'..coll_name
local DATA_KEYS  = NAMESPACE..':D:'..coll_name
local TIME_KEYS  = NAMESPACE..':T:'..coll_name
local DATA_KEY   = DATA_KEYS..':'..list_id
local TIME_KEY   = TIME_KEYS..':'..list_id
local REDIS_USED_MEMORY                     = 0
local REDIS_MAXMEMORY                       = 0
local ROLLBACK                              = {}
local TOTAL_BYTES_DELETED                   = 0
local LAST_CLEANUP_BYTES_MUST_BE_DELETED    = 0
local LAST_CLEANUP_ITEMS                    = 0
local LAST_OPERATION                        = ''
local INSERTS_SINCE_CLEANING                = 0
local UPDATES_SINCE_CLEANING                = 0

local _DEBUG, _DEBUG_ID, _FUNC_NAME

local table_merge = function ( t1, t2 )
    for key, val in pairs( t2 ) do
        t1[ key ] = val
    end
end

local _debug_log = function ( values )
    table_merge( values, {
        _DEBUG_ID                   = _DEBUG_ID,
        _FUNC_NAME                  = _FUNC_NAME,
        REDIS_USED_MEMORY           = REDIS_USED_MEMORY,
        list_id                     = list_id,
        data_id                     = data_id,
        data_len                    = #data,
        ROLLBACK                    = ROLLBACK
    } )

    redis.log( redis.LOG_NOTICE, _FUNC_NAME..': '..cjson.encode( values ) )
end

local _setup = function ( argv_idx, func_name, extra_data_len )
    LAST_OPERATION = func_name

    REDIS_MAXMEMORY = tonumber( redis.call( 'CONFIG', 'GET', 'maxmemory' )[2] )
    local memory_reserve_coefficient = 1 + tonumber( redis.call( 'HGET', STATUS_KEY, 'memory_reserve' ) )

    local redis_used_memory = string.match(
        redis.call( 'INFO', 'memory' ),
        'used_memory:(%d+)'
    )
    REDIS_USED_MEMORY = tonumber( redis_used_memory )
    LAST_CLEANUP_BYTES_MUST_BE_DELETED = REDIS_USED_MEMORY + extra_data_len - math.floor( REDIS_MAXMEMORY / memory_reserve_coefficient )
    if LAST_CLEANUP_BYTES_MUST_BE_DELETED < 0 or REDIS_MAXMEMORY == 0 then
        LAST_CLEANUP_BYTES_MUST_BE_DELETED = 0
    end

    INSERTS_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'inserts_since_cleaning' ) )
    if INSERTS_SINCE_CLEANING == nil then
        INSERTS_SINCE_CLEANING = 0
    end
    UPDATES_SINCE_CLEANING = tonumber( redis.call( 'HGET', STATUS_KEY, 'updates_since_cleaning' ) )
    if UPDATES_SINCE_CLEANING == nil then
        UPDATES_SINCE_CLEANING = 0
    end

    _FUNC_NAME  = func_name
    _DEBUG_ID   = tonumber( ARGV[ argv_idx ] )
    if _DEBUG_ID ~= 0 then
        _DEBUG = true
        _debug_log( {
            _STEP                   = '_setup',
            maxmemory               = REDIS_MAXMEMORY,
            redis_used_memory       = REDIS_USED_MEMORY,
            bytes_must_be_deleted   = LAST_CLEANUP_BYTES_MUST_BE_DELETED
        } )
    else
        _DEBUG = false
    end
end

local renew_last_cleanup_values = function ()
    if LAST_CLEANUP_ITEMS > 0 then
        local last_cleanup_bytes_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_bytes' ) )
        local last_cleanup_items_values = cjson.decode( redis.call( 'HGET', STATUS_KEY, 'last_cleanup_items' ) )
        if #last_cleanup_bytes_values >= 10 then
            table.remove ( last_cleanup_bytes_values, 1 )
            table.remove ( last_cleanup_items_values, 1 )
        end
        table.insert( last_cleanup_bytes_values, TOTAL_BYTES_DELETED )
        table.insert( last_cleanup_items_values, LAST_CLEANUP_ITEMS )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', cjson.encode( last_cleanup_bytes_values ) )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_items', cjson.encode( last_cleanup_items_values ) )
    end
end

local cleaning_error = function ( error_msg )
    if _DEBUG then
        _debug_log( {
            _STEP       = 'cleaning_error',
            error_msg   = error_msg
        } )
    end

    for _, rollback_command in ipairs( ROLLBACK ) do
        redis.call( unpack( rollback_command ) )
    end
    -- Level 2 points the error to where the function that called error was called
    renew_last_cleanup_values()
    error( error_msg, 2 )
end

-- deleting old data to make room for new data
local cleaning = function ( list_id, data_id, is_cleaning_needed )
    local coll_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'items' ) )

    if coll_items == 0 then
        return
    end

    local cleanup_bytes = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_bytes' ) )
    local cleanup_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'cleanup_items' ) )

    if not ( is_cleaning_needed or LAST_CLEANUP_BYTES_MUST_BE_DELETED > 0 ) then
        return
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Before cleanings',
            coll_items      = coll_items,
            cleanup_items   = cleanup_items,
            cleanup_bytes   = cleanup_bytes,
        } )
    end

    local items_deleted = 0
    local bytes_deleted = 0
    local lists_deleted = 0

    repeat
        if redis.call( 'EXISTS', QUEUE_KEY ) == 0 then
            -- Level 2 points the error to where the function that called error was called
            renew_last_cleanup_values()
            error( 'Queue key does not exist', 2 )
        end

        -- continue to work with the to_delete (requiring removal) data and for them using the prefix 'to_delete_'
        local to_delete_list_id, last_removed_time = unpack( redis.call( 'ZRANGE', QUEUE_KEY, 0, 0, 'WITHSCORES' ) )
        last_removed_time = tonumber( last_removed_time )
        -- key data structures
        local to_delete_data_key = DATA_KEYS..':'..to_delete_list_id
        local to_delete_time_key = TIME_KEYS..':'..to_delete_list_id

        -- looking for the oldest data
        local to_delete_data_id
        local to_delete_data
        local items = redis.call( 'HLEN', to_delete_data_key )
-- #FIXME: to_delete_data -> to_delete_data_len
-- HSTRLEN key field
-- Available since 3.2.0.
        if items == 1 then
            to_delete_data_id, to_delete_data = unpack( redis.call( 'HGETALL', to_delete_data_key ) )
        else
            to_delete_data_id = unpack( redis.call( 'ZRANGE', to_delete_time_key, 0, 0 ) )
            to_delete_data    = redis.call( 'HGET', to_delete_data_key, to_delete_data_id )
        end
        local to_delete_data_len = #to_delete_data
        to_delete_data = nil    -- free memory

        if _DEBUG then
            _debug_log( {
                _STEP               = 'Before real cleaning',
                items               = items,
                to_delete_list_id   = to_delete_list_id,
                to_delete_data_id   = to_delete_data_id,
                to_delete_data_len  = to_delete_data_len
            } )
        end

        if to_delete_list_id == list_id and to_delete_data_id == data_id then
            if items_deleted == 0 then
                -- Its first attempt to clean the conflicting data, for which the primary operation executed.
                -- In this case, we are roll back operations that have been made before, and immediately return an error,
                -- shifting the handling of such errors on the client.
                cleaning_error( "OOM Command not allowed when used memory > 'maxmemory'." )
            end
            break
        end

        if _DEBUG then
            _debug_log( {
                _STEP           = 'Why it is cleared?',
                coll_items      = coll_items,
                cleanup_bytes   = cleanup_bytes,
                cleanup_items   = cleanup_items,
                items_deleted   = items_deleted,
                bytes_deleted   = bytes_deleted,
            } )
        end

        -- actually remove the oldest item
        redis.call( 'HDEL', to_delete_data_key, to_delete_data_id )
        items = items - 1
        coll_items = coll_items - 1

        redis.call( 'HSET', STATUS_KEY, 'last_removed_time', last_removed_time )

        if items > 0 then
            -- If the list has more data
            redis.call( 'ZREM', to_delete_time_key, to_delete_data_id )
            local oldest_item_time = tonumber( redis.call( 'ZRANGE', to_delete_time_key, 0, 0, 'WITHSCORES' )[2] )
            redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, to_delete_list_id )

            if items == 1 then
                redis.call( 'DEL', to_delete_time_key )
            end
        else
            -- If the list does not have data
            -- remove the name of the list from the queue collection
            redis.call( 'ZREM', QUEUE_KEY, to_delete_list_id )
            lists_deleted = lists_deleted + 1
        end

        -- amount of data collection decreased
        items_deleted = items_deleted + 1
        bytes_deleted = bytes_deleted + to_delete_data_len

        if _DEBUG then
            _debug_log( {
                _STEP               = 'After real cleaning',
                to_delete_data_key  = to_delete_data_key,
                to_delete_data_id   = to_delete_data_id,
                items               = items,
                items_deleted       = items_deleted,
                bytes_deleted       = bytes_deleted,
            } )
        end

    until
            coll_items <= 0
        or (
                items_deleted >= cleanup_items
            and bytes_deleted >= cleanup_bytes
        )

    if items_deleted > 0 then
        -- reduce the number of items in the collection
        redis.call( 'HINCRBY', STATUS_KEY, 'items', -items_deleted )
    end
    if lists_deleted > 0 then
        -- reduce the number of lists stored in a collection
        redis.call( 'HINCRBY',  STATUS_KEY, 'lists', -lists_deleted )
    end

    if _DEBUG then
        _debug_log( {
            _STEP           = 'Cleaning finished',
            items_deleted   = items_deleted,
            bytes_deleted   = bytes_deleted,
            lists_deleted   = lists_deleted,
            cleanup_bytes   = cleanup_bytes,
            cleanup_items   = cleanup_items,
            coll_items      = coll_items,
        } )
    end

    if bytes_deleted > 0 then
        if TOTAL_BYTES_DELETED == 0 then    -- first cleaning
            INSERTS_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
            UPDATES_SINCE_CLEANING = 0
            redis.call( 'HSET', STATUS_KEY, 'updates_since_cleaning', UPDATES_SINCE_CLEANING )
        end

        TOTAL_BYTES_DELETED = TOTAL_BYTES_DELETED + bytes_deleted
        LAST_CLEANUP_ITEMS = LAST_CLEANUP_ITEMS + items_deleted

        -- information values
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_maxmemory', REDIS_MAXMEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_cleanup_used_memory', REDIS_USED_MEMORY )
        redis.call( 'HSET', STATUS_KEY, 'last_bytes_must_be_deleted', LAST_CLEANUP_BYTES_MUST_BE_DELETED )
    end
end

local call_with_error_control = function ( list_id, data_id, ... )
    local retries = 2
    local ret
    local error_msg = '<Empty error message>'
    repeat
        ret = redis.pcall( ... )
        if type( ret ) == 'table' and ret.err ~= nil then
            error_msg   = "OOM Command not allowed when used memory > 'maxmemory'. - " .. ret.err .. " (call = " .. cjson.encode( { ... } ) .. ")"
            if _DEBUG then
                _debug_log( {
                    _STEP       = 'call_with_error_control',
                    error_msg   = error_msg,
                    retries     = retries
                } )
            end

            cleaning( list_id, data_id, true )
        else
            break
        end
        retries = retries - 1
    until retries == 0

    if retries == 0 then
        -- Operation returned an error related to insufficient memory.
        -- Start cleaning process and then re-try operation.
        -- Repeat the cycle of operation + memory cleaning a couple of times and return an error / fail,
        -- if it still did not work.
        cleaning_error( error_msg )
    end

    return ret
end


-- determine whether there is a list of data and a collection
if redis.call( 'EXISTS', STATUS_KEY ) == 0 then
    return { -1006, 0, 0, 0 }
end

local reduce_list_items = function ( list_id )
    local max_list_items = tonumber( redis.call( 'HGET', STATUS_KEY, 'max_list_items' ) )
    if max_list_items ~= nil and max_list_items > 0 and redis.call( 'EXISTS', DATA_KEY ) == 1 then
        local list_items        = redis.call( 'HLEN', DATA_KEY )
        local older_allowed     = tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) )
        local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

        while list_items >= max_list_items do
            local removed_data_time, removed_data_id
            list_items = list_items - 1

            if list_items == 0 then
                removed_data_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
                redis.call( 'ZREM', QUEUE_KEY, list_id )
                redis.call( 'DEL', DATA_KEY )
                redis.call( 'HINCRBY', STATUS_KEY, 'lists', -1 )
            else
                removed_data_id, removed_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                removed_data_id     = tonumber( removed_data_id )
                removed_data_time   = tonumber( removed_data_time )
                redis.call( 'ZREM', TIME_KEY, removed_data_id )
                redis.call( 'HDEL', DATA_KEY, removed_data_id )

                local lowest_data_id, lowest_data_time = unpack( redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' ) )
                redis.call( 'ZADD', QUEUE_KEY, lowest_data_time, lowest_data_id )

                if redis.call( 'HLEN', DATA_KEY ) == 1 then
                    redis.call( 'DEL', TIME_KEY )
                end
            end

            redis.call( 'HINCRBY', STATUS_KEY, 'items', -1 )

            if older_allowed == 0 and ( last_removed_time == 0 or removed_data_time < last_removed_time ) then
                redis.call( 'HSET', STATUS_KEY, 'last_removed_time', removed_data_time )
                last_removed_time = removed_data_time
            end
        end
    end
end

reduce_list_items( list_id )


-- verification of the existence of old data with new data identifier
if redis.call( 'HEXISTS', DATA_KEY, data_id ) == 1 then
    return { -1008, 0, 0, 0 }
end

-- Validating the time of new data, if required
local last_removed_time = tonumber( redis.call( 'HGET', STATUS_KEY, 'last_removed_time' ) )

if tonumber( redis.call( 'HGET', STATUS_KEY, 'older_allowed' ) ) == 0 then
    if redis.call( 'EXISTS', QUEUE_KEY ) == 1 then
        if data_time < last_removed_time then
            return { -1009, 0, 0, 0 }
        end
    end
end

-- deleting obsolete data, if it is necessary
local data_len = #data
_setup( 7, 'insert', data_len ) -- 7 -> is the index of ARGV[7]
cleaning( list_id, data_id, false )

-- add data to the list
-- Remember that the list and the collection can be automatically deleted after the "crowding out" old data

-- the existing data
local items = redis.call( 'HLEN', DATA_KEY )
local existing_id, existing_time
if items == 1 then
    existing_id   = unpack( redis.call( 'HGETALL', DATA_KEY ) )
    existing_time = tonumber( redis.call( 'ZSCORE', QUEUE_KEY, list_id ) )
end

-- actually add data to the list
call_with_error_control( list_id, data_id, 'HSET', DATA_KEY, data_id, data )
data = nil  -- free memory
table.insert( ROLLBACK, 1, { 'HDEL', DATA_KEY, data_id } )

if redis.call( 'HLEN', DATA_KEY ) == 1 then  -- list recreated after cleaning
    redis.call( 'HINCRBY', STATUS_KEY, 'lists', 1 )
    table.insert( ROLLBACK, 1, { 'HINCRBY', STATUS_KEY, 'lists', -1 } )
    call_with_error_control( list_id, data_id, 'ZADD', QUEUE_KEY, data_time, list_id )
else
    if items == 1 then
        call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, existing_time, existing_id )
        table.insert( ROLLBACK, 1, { 'ZREM', TIME_KEY, existing_id } )
    end
    call_with_error_control( list_id, data_id, 'ZADD', TIME_KEY, data_time, data_id )
    local oldest_item_time = redis.call( 'ZRANGE', TIME_KEY, 0, 0, 'WITHSCORES' )[2]
    redis.call( 'ZADD', QUEUE_KEY, oldest_item_time, list_id )
end

-- reflect the addition of new data
redis.call( 'HINCRBY', STATUS_KEY, 'items', 1 )
if data_time < last_removed_time then
    redis.call( 'HSET', STATUS_KEY, 'last_removed_time', 0 )
end

renew_last_cleanup_values()
-- redis.call( 'HSET', STATUS_KEY, 'last_cleanup_bytes', LAST_CLEANUP_BYTES )
INSERTS_SINCE_CLEANING = INSERTS_SINCE_CLEANING + 1
redis.call( 'HSET', STATUS_KEY, 'inserts_since_cleaning', INSERTS_SINCE_CLEANING )
return { -1000, LAST_CLEANUP_ITEMS, REDIS_USED_MEMORY, TOTAL_BYTES_DELETED }

  at lib/Redis/CappedCollection.pm line 3800.

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_CappedCollection/25_cleaning_correctness.t line 44
# 	main::BEGIN() called at t/00_CappedCollection/25_cleaning_correctness.t line 44
# 	eval {...} called at t/00_CappedCollection/25_cleaning_correctness.t line 44
# 
# Looks like your test exited with -1 just after 5.
t/00_CappedCollection/25_cleaning_correctness.t ........ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/5 subtests 

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/tlib/Redis/CappedCollection/Test/Utils.pm line 25
# 	Redis::CappedCollection::Test::Utils::BEGIN() called at t/tlib/Redis/CappedCollection/Test/Utils.pm line 25
# 	eval {...} called at t/tlib/Redis/CappedCollection/Test/Utils.pm line 25
# 	require Redis/CappedCollection/Test/Utils.pm called at t/00_CappedCollection/26_script_variable_protection.t line 31
# 	main::BEGIN() called at t/00_CappedCollection/26_script_variable_protection.t line 31
# 	eval {...} called at t/00_CappedCollection/26_script_variable_protection.t line 31
# 
# Looks like you failed 1 test of 42.
t/00_CappedCollection/26_script_variable_protection.t .. 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/42 subtests 
Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
t/00_CappedCollection/27_fork.t ........................ ok
Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
t/00_CappedCollection/28_data_dependency.t ............. ok

#   Failed test 'no warnings'
#   at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/Builder.pm line 193.
# There were 1 warning(s)
#     Previous test 0 ''
#     Attempt to call undefined import method with arguments ("1.976") via package "Redis" (Perhaps you forgot to load the package?) at lib/Redis/CappedCollection.pm line 78.
#  at lib/Redis/CappedCollection.pm line 78.
# 	Redis::CappedCollection::BEGIN() called at lib/Redis/CappedCollection.pm line 78
# 	eval {...} called at lib/Redis/CappedCollection.pm line 78
# 	require Redis/CappedCollection.pm called at t/00_compile.t line 17
# 	main::BEGIN() called at t/00_compile.t line 17
# 	eval {...} called at t/00_compile.t line 17
# 	eval 'package main;
# BEGIN { ${^WARNING_BITS} = $args[-1] if defined $args[-1] }
# #line 17 t/00_compile.t
# use Redis::CappedCollection @{$args[0]};
# 1;
# ' called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/More.pm line 1056
# 	Test::More::_eval("package main;\x{a}BEGIN { \${^WARNING_BITS} = \$args[-1] if defined"..., ARRAY(0x55885650eed8), "UUUUUUUUUUUUUUUUUUUU") called at /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/Test/More.pm line 1031
# 	Test::More::use_ok("Redis::CappedCollection", "\$DATA_VERSION", "\$DEFAULT_CONNECTION_TIMEOUT", "\$DEFAULT_OPERATION_TIMEOUT", "\$DEFAULT_SERVER", "\$DEFAULT_PORT", "\$NAMESPACE", "\$MIN_MEMORY_RESERVE", ...) called at t/00_compile.t line 17
# 	main::BEGIN() called at t/00_compile.t line 42
# 	eval {...} called at t/00_compile.t line 42
# 
# Looks like you failed 1 test of 21.
t/00_compile.t ......................................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/21 subtests 

Test Summary Report
-------------------
t/00_CappedCollection/00_compile.t                   (Wstat: 256 (exited 1) Tests: 34 Failed: 1)
  Failed test:  34
  Non-zero exit status: 1
t/00_CappedCollection/01_new.t                       (Wstat: 256 (exited 1) Tests: 2 Failed: 1)
  Failed test:  2
  Non-zero exit status: 1
t/00_CappedCollection/02_insert.t                    (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/03_update.t                    (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/04_receive.t                   (Wstat: 65280 (exited 255) Tests: 7 Failed: 1)
  Failed test:  7
  Non-zero exit status: 255
t/00_CappedCollection/05_collection_info.t           (Wstat: 65280 (exited 255) Tests: 36 Failed: 1)
  Failed test:  36
  Non-zero exit status: 255
t/00_CappedCollection/06_pop_oldest.t                (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/07_exists.t                    (Wstat: 65280 (exited 255) Tests: 23 Failed: 1)
  Failed test:  23
  Non-zero exit status: 255
t/00_CappedCollection/08_lists.t                     (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/09_drop_collection.t           (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/10_quit.t                      (Wstat: 65280 (exited 255) Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 255
t/00_CappedCollection/11_max_datasize.t              (Wstat: 65280 (exited 255) Tests: 21 Failed: 1)
  Failed test:  21
  Non-zero exit status: 255
t/00_CappedCollection/12_last_errorcode.t            (Wstat: 65280 (exited 255) Tests: 11 Failed: 1)
  Failed test:  11
  Non-zero exit status: 255
t/00_CappedCollection/13_name.t                      (Wstat: 65280 (exited 255) Tests: 14 Failed: 1)
  Failed test:  14
  Non-zero exit status: 255
t/00_CappedCollection/14_max_list_items.t            (Wstat: 65280 (exited 255) Tests: 12 Failed: 1)
  Failed test:  12
  Non-zero exit status: 255
t/00_CappedCollection/15_cleanup_bytes.t             (Wstat: 65280 (exited 255) Tests: 14 Failed: 1)
  Failed test:  14
  Non-zero exit status: 255
t/00_CappedCollection/17_cleanup_items.t             (Wstat: 65280 (exited 255) Tests: 26 Failed: 1)
  Failed test:  26
  Non-zero exit status: 255
t/00_CappedCollection/18_info.t                      (Wstat: 65280 (exited 255) Tests: 9 Failed: 1)
  Failed test:  9
  Non-zero exit status: 255
t/00_CappedCollection/19_drop.t                      (Wstat: 65280 (exited 255) Tests: 6 Failed: 1)
  Failed test:  6
  Non-zero exit status: 255
t/00_CappedCollection/20_cleaning.t                  (Wstat: 65280 (exited 255) Tests: 7 Failed: 1)
  Failed test:  7
  Non-zero exit status: 255
t/00_CappedCollection/21_rollback.t                  (Wstat: 65024 (exited 254) Tests: 7887 Failed: 3942)
  Failed tests:  4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24
                26, 28, 30, 32, 34, 36, 38, 40, 42, 44
                46, 48, 50, 52, 54, 56, 58, 60, 62, 64
                66, 68, 70, 72, 74, 76, 78, 80, 82, 84
                86, 88, 90, 92, 94, 96, 98, 100, 102, 104
                106, 108, 110, 112, 114, 116, 118, 120
                122, 124, 126, 128, 130, 132, 134, 136
                138, 140, 142, 144, 146, 148, 150, 152
                154, 156, 158, 160, 162, 164, 166, 168
                170, 172, 174, 176, 178, 180, 182, 184
                186, 188, 190, 192, 194, 196, 198, 200
                202, 204, 206, 208, 210, 212, 214, 216
                218, 220, 222, 224, 226, 228, 230, 232
                234, 236, 238, 240, 242, 244, 246, 248
                250, 252, 254, 256, 258, 260, 262, 264
                266, 268, 270, 272, 274, 276, 278, 280
                282, 284, 286, 288, 290, 292, 294, 296
                298, 300, 302, 304, 306, 308, 310, 312
                314, 316, 318, 320, 322, 324, 326, 328
                330, 332, 334, 336, 338, 340, 342, 344
                346, 348, 350, 352, 354, 356, 358, 360
                362, 364, 366, 368, 370, 372, 374, 376
                378, 380, 382, 384, 386, 388, 390, 392
                394, 396, 398, 400, 402, 404, 406, 408
                410, 412, 414, 416, 418, 420, 422, 424
                426, 428, 430, 432, 434, 436, 438, 440
                442, 444, 446, 448, 450, 452, 454, 456
                458, 460, 462, 464, 466, 468, 470, 472
                474, 476, 478, 480, 482, 484, 486, 488
                490, 492, 494, 496, 498, 500, 502, 504
                506, 508, 510, 512, 514, 516, 518, 520
                522, 524, 526, 528, 530, 532, 534, 536
                538, 540, 542, 544, 546, 548, 550, 552
                554, 556, 558, 560, 562, 564, 566, 568
                570, 572, 574, 576, 578, 580, 582, 584
                586, 588, 590, 592, 594, 596, 598, 600
                602, 604, 606, 608, 610, 612, 614, 616
                618, 620, 622, 624, 626, 628, 630, 632
                634, 636, 638, 640, 642, 644, 646, 648
                650, 652, 654, 656, 658, 660, 662, 664
                666, 668, 670, 672, 674, 676, 678, 680
                682, 684, 686, 688, 690, 692, 694, 696
                698, 700, 702, 704, 706, 708, 710, 712
                714, 716, 718, 720, 722, 724, 726, 728
                730, 732, 734, 736, 738, 740, 742, 744
                746, 748, 750, 752, 754, 756, 758, 760
                762, 764, 766, 768, 770, 772, 774, 776
                778, 780, 782, 784, 786, 788, 790, 792
                794, 796, 798, 800, 802, 804, 806, 808
                810, 812, 814, 816, 818, 820, 822, 824
                826, 828, 830, 832, 834, 836, 838, 840
                842, 844, 846, 848, 850, 852, 854, 856
                858, 860, 862, 864, 866, 868, 870, 872
                874, 876, 878, 880, 882, 884, 886, 888
                890, 892, 894, 896, 898, 900, 902, 904
                906, 908, 910, 912, 914, 916, 918, 920
                922, 924, 926, 928, 930, 932, 934, 936
                938, 940, 942, 944, 946, 948, 950, 952
                954, 956, 958, 960, 962, 964, 966, 968
                970, 972, 974, 976, 978, 980, 982, 984
                986, 988, 990, 992, 994, 996, 998, 1000
                1002, 1004, 1006, 1008, 1010, 1012, 1014
                1016, 1018, 1020, 1022, 1024, 1026, 1028
                1030, 1032, 1034, 1036, 1038, 1040, 1042
                1044, 1046, 1048, 1050, 1052, 1054, 1056
                1058, 1060, 1062, 1064, 1066, 1068, 1070
                1072, 1074, 1076, 1078, 1080, 1082, 1084
                1086, 1088, 1090, 1092, 1094, 1096, 1098
                1100, 1102, 1104, 1106, 1108, 1110, 1112
                1114, 1116, 1118, 1120, 1122, 1124, 1126
                1128, 1130, 1132, 1134, 1136, 1138, 1140
                1142, 1144, 1146, 1148, 1150, 1152, 1154
                1156, 1158, 1160, 1162, 1164, 1166, 1168
                1170, 1172, 1174, 1176, 1178, 1180, 1182
                1184, 1186, 1188, 1190, 1192, 1194, 1196
                1198, 1200, 1202, 1204, 1206, 1208, 1210
                1212, 1214, 1216, 1218, 1220, 1222, 1224
                1226, 1228, 1230, 1232, 1234, 1236, 1238
                1240, 1242, 1244, 1246, 1248, 1250, 1252
                1254, 1256, 1258, 1260, 1262, 1264, 1266
                1268, 1270, 1272, 1274, 1276, 1278, 1280
                1282, 1284, 1286, 1288, 1290, 1292, 1294
                1296, 1298, 1300, 1302, 1304, 1306, 1308
                1310, 1312, 1314, 1316, 1318, 1320, 1322
                1324, 1326, 1328, 1330, 1332, 1334, 1336
                1338, 1340, 1342, 1344, 1346, 1348, 1350
                1352, 1354, 1356, 1358, 1360, 1362, 1364
                1366, 1368, 1370, 1372, 1374, 1376, 1378
                1380, 1382, 1384, 1386, 1388, 1390, 1392
                1394, 1396, 1398, 1400, 1402, 1404, 1406
                1408, 1410, 1412, 1414, 1416, 1418, 1420
                1422, 1424, 1426, 1428, 1430, 1432, 1434
                1436, 1438, 1440, 1442, 1444, 1446, 1448
                1450, 1452, 1454, 1456, 1458, 1460, 1462
                1464, 1466, 1468, 1470, 1472, 1474, 1476
                1478, 1480, 1482, 1484, 1486, 1488, 1490
                1492, 1494, 1496, 1498, 1500, 1502, 1504
                1506, 1508, 1510, 1512, 1514, 1516, 1518
                1520, 1522, 1524, 1526, 1528, 1530, 1532
                1534, 1536, 1538, 1540, 1542, 1544, 1546
                1548, 1550, 1552, 1554, 1556, 1558, 1560
                1562, 1564, 1566, 1568, 1570, 1572, 1574
                1576, 1578, 1580, 1582, 1584, 1586, 1588
                1590, 1592, 1594, 1596, 1598, 1600, 1602
                1604, 1606, 1608, 1610, 1612, 1614, 1616
                1618, 1620, 1622, 1624, 1626, 1628, 1630
                1632, 1634, 1636, 1638, 1640, 1642, 1644
                1646, 1648, 1650, 1652, 1654, 1656, 1658
                1660, 1662, 1664, 1666, 1668, 1670, 1672
                1674, 1676, 1678, 1680, 1682, 1684, 1686
                1688, 1690, 1692, 1694, 1696, 1698, 1700
                1702, 1704, 1706, 1708, 1710, 1712, 1714
                1716, 1718, 1720, 1722, 1724, 1726, 1728
                1730, 1732, 1734, 1736, 1738, 1740, 1742
                1744, 1746, 1748, 1750, 1752, 1754, 1756
                1758, 1760, 1762, 1764, 1766, 1768, 1770
                1772, 1774, 1776, 1778, 1780, 1782, 1784
                1786, 1788, 1790, 1792, 1794, 1796, 1798
                1800, 1802, 1804, 1806, 1808, 1810, 1812
                1814, 1816, 1818, 1820, 1822, 1824, 1826
                1828, 1830, 1832, 1834, 1836, 1838, 1840
                1842, 1844, 1846, 1848, 1850, 1852, 1854
                1856, 1858, 1860, 1862, 1864, 1866, 1868
                1870, 1872, 1874, 1876, 1878, 1880, 1882
                1884, 1886, 1888, 1890, 1892, 1894, 1896
                1898, 1900, 1902, 1904, 1906, 1908, 1910
                1912, 1914, 1916, 1918, 1920, 1922, 1924
                1926, 1928, 1930, 1932, 1934, 1936, 1938
                1940, 1942, 1944, 1946, 1948, 1950, 1952
                1954, 1956, 1958, 1960, 1962, 1964, 1966
                1968, 1970, 1972, 1974, 1976, 1978, 1980
                1982, 1984, 1986, 1988, 1990, 1992, 1994
                1996, 1998, 2000, 2002, 2004, 2006, 2008
                2010, 2012, 2014, 2016, 2018, 2020, 2022
                2024, 2026, 2028, 2030, 2032, 2034, 2036
                2038, 2040, 2042, 2044, 2046, 2048, 2050
                2052, 2054, 2056, 2058, 2060, 2062, 2064
                2066, 2068, 2070, 2072, 2074, 2076, 2078
                2080, 2082, 2084, 2086, 2088, 2090, 2092
                2094, 2096, 2098, 2100, 2102, 2104, 2106
                2108, 2110, 2112, 2114, 2116, 2118, 2120
                2122, 2124, 2126, 2128, 2130, 2132, 2134
                2136, 2138, 2140, 2142, 2144, 2146, 2148
                2150, 2152, 2154, 2156, 2158, 2160, 2162
                2164, 2166, 2168, 2170, 2172, 2174, 2176
                2178, 2180, 2182, 2184, 2186, 2188, 2190
                2192, 2194, 2196, 2198, 2200, 2202, 2204
                2206, 2208, 2210, 2212, 2214, 2216, 2218
                2220, 2222, 2224, 2226, 2228, 2230, 2232
                2234, 2236, 2238, 2240, 2242, 2244, 2246
                2248, 2250, 2252, 2254, 2256, 2258, 2260
                2262, 2264, 2266, 2268, 2270, 2272, 2274
                2276, 2278, 2280, 2282, 2284, 2286, 2288
                2290, 2292, 2294, 2296, 2298, 2300, 2302
                2304, 2306, 2308, 2310, 2312, 2314, 2316
                2318, 2320, 2322, 2324, 2326, 2328, 2330
                2332, 2334, 2336, 2338, 2340, 2342, 2344
                2346, 2348, 2350, 2352, 2354, 2356, 2358
                2360, 2362, 2364, 2366, 2368, 2370, 2372
                2374, 2376, 2378, 2380, 2382, 2384, 2386
                2388, 2390, 2392, 2394, 2396, 2398, 2400
                2402, 2404, 2406, 2408, 2410, 2412, 2414
                2416, 2418, 2420, 2422, 2424, 2426, 2428
                2430, 2432, 2434, 2436, 2438, 2440, 2442
                2444, 2446, 2448, 2450, 2452, 2454, 2456
                2458, 2460, 2462, 2464, 2466, 2468, 2470
                2472, 2474, 2476, 2478, 2480, 2482, 2484
                2486, 2488, 2490, 2492, 2494, 2496, 2498
                2500, 2502, 2504, 2506, 2508, 2510, 2512
                2514, 2516, 2518, 2520, 2522, 2524, 2526
                2528, 2530, 2532, 2534, 2536, 2538, 2540
                2542, 2544, 2546, 2548, 2550, 2552, 2554
                2556, 2558, 2560, 2562, 2564, 2566, 2568
                2570, 2572, 2574, 2576, 2578, 2580, 2582
                2584, 2586, 2588, 2590, 2592, 2594, 2596
                2598, 2600, 2602, 2604, 2606, 2608, 2610
                2612, 2614, 2616, 2618, 2620, 2622, 2624
                2626, 2628, 2630, 2632, 2634, 2636, 2638
                2640, 2642, 2644, 2646, 2648, 2650, 2652
                2654, 2656, 2658, 2660, 2662, 2664, 2666
                2668, 2670, 2672, 2674, 2676, 2678, 2680
                2682, 2684, 2686, 2688, 2690, 2692, 2694
                2696, 2698, 2700, 2702, 2704, 2706, 2708
                2710, 2712, 2714, 2716, 2718, 2720, 2722
                2724, 2726, 2728, 2730, 2732, 2734, 2736
                2738, 2740, 2742, 2744, 2746, 2748, 2750
                2752, 2754, 2756, 2758, 2760, 2762, 2764
                2766, 2768, 2770, 2772, 2774, 2776, 2778
                2780, 2782, 2784, 2786, 2788, 2790, 2792
                2794, 2796, 2798, 2800, 2802, 2804, 2806
                2808, 2810, 2812, 2814, 2816, 2818, 2820
                2822, 2824, 2826, 2828, 2830, 2832, 2834
                2836, 2838, 2840, 2842, 2844, 2846, 2848
                2850, 2852, 2854, 2856, 2858, 2860, 2862
                2864, 2866, 2868, 2870, 2872, 2874, 2876
                2878, 2880, 2882, 2884, 2886, 2888, 2890
                2892, 2894, 2896, 2898, 2900, 2902, 2904
                2906, 2908, 2910, 2912, 2914, 2916, 2918
                2920, 2922, 2924, 2926, 2928, 2930, 2932
                2934, 2936, 2938, 2940, 2942, 2944, 2946
                2948, 2950, 2952, 2954, 2956, 2958, 2960
                2962, 2964, 2966, 2968, 2970, 2972, 2974
                2976, 2978, 2980, 2982, 2984, 2986, 2988
                2990, 2992, 2994, 2996, 2998, 3000, 3002
                3004, 3006, 3008, 3010, 3012, 3014, 3016
                3018, 3020, 3022, 3024, 3026, 3028, 3030
                3032, 3034, 3036, 3038, 3040, 3042, 3044
                3046, 3048, 3050, 3052, 3054, 3056, 3058
                3060, 3062, 3064, 3066, 3068, 3070, 3072
                3074, 3076, 3078, 3080, 3082, 3084, 3086
                3088, 3090, 3092, 3094, 3096, 3098, 3100
                3102, 3104, 3106, 3108, 3110, 3112, 3114
                3116, 3118, 3120, 3122, 3124, 3126, 3128
                3130, 3132, 3134, 3136, 3138, 3140, 3142
                3144, 3146, 3148, 3150, 3152, 3154, 3156
                3158, 3160, 3162, 3164, 3166, 3168, 3170
                3172, 3174, 3176, 3178, 3180, 3182, 3184
                3186, 3188, 3190, 3192, 3194, 3196, 3198
                3200, 3202, 3204, 3206, 3208, 3210, 3212
                3214, 3216, 3218, 3220, 3222, 3224, 3226
                3228, 3230, 3232, 3234, 3236, 3238, 3240
                3242, 3244, 3246, 3248, 3250, 3252, 3254
                3256, 3258, 3260, 3262, 3264, 3266, 3268
                3270, 3272, 3274, 3276, 3278, 3280, 3282
                3284, 3286, 3288, 3290, 3292, 3294, 3296
                3298, 3300, 3302, 3304, 3306, 3308, 3310
                3312, 3314, 3316, 3318, 3320, 3322, 3324
                3326, 3328, 3330, 3332, 3334, 3336, 3338
                3340, 3342, 3344, 3346, 3348, 3350, 3352
                3354, 3356, 3358, 3360, 3362, 3364, 3366
                3368, 3370, 3372, 3374, 3376, 3378, 3380
                3382, 3384, 3386, 3388, 3390, 3392, 3394
                3396, 3398, 3400, 3402, 3404, 3406, 3408
                3410, 3412, 3414, 3416, 3418, 3420, 3422
                3424, 3426, 3428, 3430, 3432, 3434, 3436
                3438, 3440, 3442, 3444, 3446, 3448, 3450
                3452, 3454, 3456, 3458, 3460, 3462, 3464
                3466, 3468, 3470, 3472, 3474, 3476, 3478
                3480, 3482, 3484, 3486, 3488, 3490, 3492
                3494, 3496, 3498, 3500, 3502, 3504, 3506
                3508, 3510, 3512, 3514, 3516, 3518, 3520
                3522, 3524, 3526, 3528, 3530, 3532, 3534
                3536, 3538, 3540, 3542, 3544, 3546, 3548
                3550, 3552, 3554, 3556, 3558, 3560, 3562
                3564, 3566, 3568, 3570, 3572, 3574, 3576
                3578, 3580, 3582, 3584, 3586, 3588, 3590
                3592, 3594, 3596, 3598, 3600, 3602, 3604
                3606, 3608, 3610, 3612, 3614, 3616, 3618
                3620, 3622, 3624, 3626, 3628, 3630, 3632
                3634, 3636, 3638, 3640, 3642, 3644, 3646
                3648, 3650, 3652, 3654, 3656, 3658, 3660
                3662, 3664, 3666, 3668, 3670, 3672, 3674
                3676, 3678, 3680, 3682, 3684, 3686, 3688
                3690, 3692, 3694, 3696, 3698, 3700, 3702
                3704, 3706, 3708, 3710, 3712, 3714, 3716
                3718, 3720, 3722, 3724, 3726, 3728, 3730
                3732, 3734, 3736, 3738, 3740, 3742, 3744
                3746, 3748, 3750, 3752, 3754, 3756, 3758
                3760, 3762, 3764, 3766, 3768, 3770, 3772
                3774, 3776, 3778, 3780, 3782, 3784, 3786
                3788, 3790, 3792, 3794, 3796, 3798, 3800
                3802, 3804, 3806, 3808, 3810, 3812, 3814
                3816, 3818, 3820, 3822, 3824, 3826, 3828
                3830, 3832, 3834, 3836, 3838, 3840, 3842
                3844, 3846, 3848, 3850, 3852, 3854, 3856
                3858, 3860, 3862, 3864, 3866, 3868, 3870
                3872, 3874, 3876, 3878, 3880, 3882, 3884
                3886, 3888, 3890, 3892, 3894, 3896, 3898
                3900, 3902, 3904, 3906, 3908, 3910, 3912
                3914, 3916, 3918, 3920, 3922, 3924, 3926
                3928, 3930, 3932, 3934, 3936, 3938, 3940
                3942, 3944, 3946, 3948, 3950, 3952, 3954
                3956, 3958, 3960, 3962, 3964, 3966, 3968
                3970, 3972, 3974, 3976, 3978, 3980, 3982
                3984, 3986, 3988, 3990, 3992, 3994, 3996
                3998, 4000, 4002, 4004, 4006, 4008, 4010
                4012, 4014, 4016, 4018, 4020, 4022, 4024
                4026, 4028, 4030, 4032, 4034, 4036, 4038
                4040, 4042, 4044, 4046, 4048, 4050, 4052
                4054, 4056, 4058, 4060, 4062, 4064, 4066
                4068, 4070, 4072, 4074, 4076, 4078, 4080
                4082, 4084, 4086, 4088, 4090, 4092, 4094
                4096, 4098, 4100, 4102, 4104, 4106, 4108
                4110, 4112, 4114, 4116, 4118, 4120, 4122
                4124, 4126, 4128, 4130, 4132, 4134, 4136
                4138, 4140, 4142, 4144, 4146, 4148, 4150
                4152, 4154, 4156, 4158, 4160, 4162, 4164
                4166, 4168, 4170, 4172, 4174, 4176, 4178
                4180, 4182, 4184, 4186, 4188, 4190, 4192
                4194, 4196, 4198, 4200, 4202, 4204, 4206
                4208, 4210, 4212, 4214, 4216, 4218, 4220
                4222, 4224, 4226, 4228, 4230, 4232, 4234
                4236, 4238, 4240, 4242, 4244, 4246, 4248
                4250, 4252, 4254, 4256, 4258, 4260, 4262
                4264, 4266, 4268, 4270, 4272, 4274, 4276
                4278, 4280, 4282, 4284, 4286, 4288, 4290
                4292, 4294, 4296, 4298, 4300, 4302, 4304
                4306, 4308, 4310, 4312, 4314, 4316, 4318
                4320, 4322, 4324, 4326, 4328, 4330, 4332
                4334, 4336, 4338, 4340, 4342, 4344, 4346
                4348, 4350, 4352, 4354, 4356, 4358, 4360
                4362, 4364, 4366, 4368, 4370, 4372, 4374
                4376, 4378, 4380, 4382, 4384, 4386, 4388
                4390, 4392, 4394, 4396, 4398, 4400, 4402
                4404, 4406, 4408, 4410, 4412, 4414, 4416
                4418, 4420, 4422, 4424, 4426, 4428, 4430
                4432, 4434, 4436, 4438, 4440, 4442, 4444
                4446, 4448, 4450, 4452, 4454, 4456, 4458
                4460, 4462, 4464, 4466, 4468, 4470, 4472
                4474, 4476, 4478, 4480, 4482, 4484, 4486
                4488, 4490, 4492, 4494, 4496, 4498, 4500
                4502, 4504, 4506, 4508, 4510, 4512, 4514
                4516, 4518, 4520, 4522, 4524, 4526, 4528
                4530, 4532, 4534, 4536, 4538, 4540, 4542
                4544, 4546, 4548, 4550, 4552, 4554, 4556
                4558, 4560, 4562, 4564, 4566, 4568, 4570
                4572, 4574, 4576, 4578, 4580, 4582, 4584
                4586, 4588, 4590, 4592, 4594, 4596, 4598
                4600, 4602, 4604, 4606, 4608, 4610, 4612
                4614, 4616, 4618, 4620, 4622, 4624, 4626
                4628, 4630, 4632, 4634, 4636, 4638, 4640
                4642, 4644, 4646, 4648, 4650, 4652, 4654
                4656, 4658, 4660, 4662, 4664, 4666, 4668
                4670, 4672, 4674, 4676, 4678, 4680, 4682
                4684, 4686, 4688, 4690, 4692, 4694, 4696
                4698, 4700, 4702, 4704, 4706, 4708, 4710
                4712, 4714, 4716, 4718, 4720, 4722, 4724
                4726, 4728, 4730, 4732, 4734, 4736, 4738
                4740, 4742, 4744, 4746, 4748, 4750, 4752
                4754, 4756, 4758, 4760, 4762, 4764, 4766
                4768, 4770, 4772, 4774, 4776, 4778, 4780
                4782, 4784, 4786, 4788, 4790, 4792, 4794
                4796, 4798, 4800, 4802, 4804, 4806, 4808
                4810, 4812, 4814, 4816, 4818, 4820, 4822
                4824, 4826, 4828, 4830, 4832, 4834, 4836
                4838, 4840, 4842, 4844, 4846, 4848, 4850
                4852, 4854, 4856, 4858, 4860, 4862, 4864
                4866, 4868, 4870, 4872, 4874, 4876, 4878
                4880, 4882, 4884, 4886, 4888, 4890, 4892
                4894, 4896, 4898, 4900, 4902, 4904, 4906
                4908, 4910, 4912, 4914, 4916, 4918, 4920
                4922, 4924, 4926, 4928, 4930, 4932, 4934
                4936, 4938, 4940, 4942, 4944, 4946, 4948
                4950, 4952, 4954, 4956, 4958, 4960, 4962
                4964, 4966, 4968, 4970, 4972, 4974, 4976
                4978, 4980, 4982, 4984, 4986, 4988, 4990
                4992, 4994, 4996, 4998, 5000, 5002, 5004
                5006, 5008, 5010, 5012, 5014, 5016, 5018
                5020, 5022, 5024, 5026, 5028, 5030, 5032
                5034, 5036, 5038, 5040, 5042, 5044, 5046
                5048, 5050, 5052, 5054, 5056, 5058, 5060
                5062, 5064, 5066, 5068, 5070, 5072, 5074
                5076, 5078, 5080, 5082, 5084, 5086, 5088
                5090, 5092, 5094, 5096, 5098, 5100, 5102
                5104, 5106, 5108, 5110, 5112, 5114, 5116
                5118, 5120, 5122, 5124, 5126, 5128, 5130
                5132, 5134, 5136, 5138, 5140, 5142, 5144
                5146, 5148, 5150, 5152, 5154, 5156, 5158
                5160, 5162, 5164, 5166, 5168, 5170, 5172
                5174, 5176, 5178, 5180, 5182, 5184, 5186
                5188, 5190, 5192, 5194, 5196, 5198, 5200
                5202, 5204, 5206, 5208, 5210, 5212, 5214
                5216, 5218, 5220, 5222, 5224, 5226, 5228
                5230, 5232, 5234, 5236, 5238, 5240, 5242
                5244, 5246, 5248, 5250, 5252, 5254, 5256
                5258, 5260, 5262, 5264, 5266, 5268, 5270
                5272, 5274, 5276, 5278, 5280, 5282, 5284
                5286, 5288, 5290, 5292, 5294, 5296, 5298
                5300, 5302, 5304, 5306, 5308, 5310, 5312
                5314, 5316, 5318, 5320, 5322, 5324, 5326
                5328, 5330, 5332, 5334, 5336, 5338, 5340
                5342, 5344, 5346, 5348, 5350, 5352, 5354
                5356, 5358, 5360, 5362, 5364, 5366, 5368
                5370, 5372, 5374, 5376, 5378, 5380, 5382
                5384, 5386, 5388, 5390, 5392, 5394, 5396
                5398, 5400, 5402, 5404, 5406, 5408, 5410
                5412, 5414, 5416, 5418, 5420, 5422, 5424
                5426, 5428, 5430, 5432, 5434, 5436, 5438
                5440, 5442, 5444, 5446, 5448, 5450, 5452
                5454, 5456, 5458, 5460, 5462, 5464, 5466
                5468, 5470, 5472, 5474, 5476, 5478, 5480
                5482, 5484, 5486, 5488, 5490, 5492, 5494
                5496, 5498, 5500, 5502, 5504, 5506, 5508
                5510, 5512, 5514, 5516, 5518, 5520, 5522
                5524, 5526, 5528, 5530, 5532, 5534, 5536
                5538, 5540, 5542, 5544, 5546, 5548, 5550
                5552, 5554, 5556, 5558, 5560, 5562, 5564
                5566, 5568, 5570, 5572, 5574, 5576, 5578
                5580, 5582, 5584, 5586, 5588, 5590, 5592
                5594, 5596, 5598, 5600, 5602, 5604, 5606
                5608, 5610, 5612, 5614, 5616, 5618, 5620
                5622, 5624, 5626, 5628, 5630, 5632, 5634
                5636, 5638, 5640, 5642, 5644, 5646, 5648
                5650, 5652, 5654, 5656, 5658, 5660, 5662
                5664, 5666, 5668, 5670, 5672, 5674, 5676
                5678, 5680, 5682, 5684, 5686, 5688, 5690
                5692, 5694, 5696, 5698, 5700, 5702, 5704
                5706, 5708, 5710, 5712, 5714, 5716, 5718
                5720, 5722, 5724, 5726, 5728, 5730, 5732
                5734, 5736, 5738, 5740, 5742, 5744, 5746
                5748, 5750, 5752, 5754, 5756, 5758, 5760
                5762, 5764, 5766, 5768, 5770, 5772, 5774
                5776, 5778, 5780, 5782, 5784, 5786, 5788
                5790, 5792, 5794, 5796, 5798, 5800, 5802
                5804, 5806, 5808, 5810, 5812, 5814, 5816
                5818, 5820, 5822, 5824, 5826, 5828, 5830
                5832, 5834, 5836, 5838, 5840, 5842, 5844
                5846, 5848, 5850, 5852, 5854, 5856, 5858
                5860, 5862, 5864, 5866, 5868, 5870, 5872
                5874, 5876, 5878, 5880, 5882, 5884, 5886
                5888, 5890, 5892, 5894, 5896, 5898, 5900
                5902, 5904, 5906, 5908, 5910, 5912, 5914
                5916, 5918, 5920, 5922, 5924, 5926, 5928
                5930, 5932, 5934, 5936, 5938, 5940, 5942
                5944, 5946, 5948, 5950, 5952, 5954, 5956
                5958, 5960, 5962, 5964, 5966, 5968, 5970
                5972, 5974, 5976, 5978, 5980, 5982, 5984
                5986, 5988, 5990, 5992, 5994, 5996, 5998
                6000, 6002, 6004, 6006, 6008, 6010, 6012
                6014, 6016, 6018, 6020, 6022, 6024, 6026
                6028, 6030, 6032, 6034, 6036, 6038, 6040
                6042, 6044, 6046, 6048, 6050, 6052, 6054
                6056, 6058, 6060, 6062, 6064, 6066, 6068
                6070, 6072, 6074, 6076, 6078, 6080, 6082
                6084, 6086, 6088, 6090, 6092, 6094, 6096
                6098, 6100, 6102, 6104, 6106, 6108, 6110
                6112, 6114, 6116, 6118, 6120, 6122, 6124
                6126, 6128, 6130, 6132, 6134, 6136, 6138
                6140, 6142, 6144, 6146, 6148, 6150, 6152
                6154, 6156, 6158, 6160, 6162, 6164, 6166
                6168, 6170, 6172, 6174, 6176, 6178, 6180
                6182, 6184, 6186, 6188, 6190, 6192, 6194
                6196, 6198, 6200, 6202, 6204, 6206, 6208
                6210, 6212, 6214, 6216, 6218, 6220, 6222
                6224, 6226, 6228, 6230, 6232, 6234, 6236
                6238, 6240, 6242, 6244, 6246, 6248, 6250
                6252, 6254, 6256, 6258, 6260, 6262, 6264
                6266, 6268, 6270, 6272, 6274, 6276, 6278
                6280, 6282, 6284, 6286, 6288, 6290, 6292
                6294, 6296, 6298, 6300, 6302, 6304, 6306
                6308, 6310, 6312, 6314, 6316, 6318, 6320
                6322, 6324, 6326, 6328, 6330, 6332, 6334
                6336, 6338, 6340, 6342, 6344, 6346, 6348
                6350, 6352, 6354, 6356, 6358, 6360, 6362
                6364, 6366, 6368, 6370, 6372, 6374, 6376
                6378, 6380, 6382, 6384, 6386, 6388, 6390
                6392, 6394, 6396, 6398, 6400, 6402, 6404
                6406, 6408, 6410, 6412, 6414, 6416, 6418
                6420, 6422, 6424, 6426, 6428, 6430, 6432
                6434, 6436, 6438, 6440, 6442, 6444, 6446
                6448, 6450, 6452, 6454, 6456, 6458, 6460
                6462, 6464, 6466, 6468, 6470, 6472, 6474
                6476, 6478, 6480, 6482, 6484, 6486, 6488
                6490, 6492, 6494, 6496, 6498, 6500, 6502
                6504, 6506, 6508, 6510, 6512, 6514, 6516
                6518, 6520, 6522, 6524, 6526, 6528, 6530
                6532, 6534, 6536, 6538, 6540, 6542, 6544
                6546, 6548, 6550, 6552, 6554, 6556, 6558
                6560, 6562, 6564, 6566, 6568, 6570, 6572
                6574, 6576, 6578, 6580, 6582, 6584, 6586
                6588, 6590, 6592, 6594, 6596, 6598, 6600
                6602, 6604, 6606, 6608, 6610, 6612, 6614
                6616, 6618, 6620, 6622, 6624, 6626, 6628
                6630, 6632, 6634, 6636, 6638, 6640, 6642
                6644, 6646, 6648, 6650, 6652, 6654, 6656
                6658, 6660, 6662, 6664, 6666, 6668, 6670
                6672, 6674, 6676, 6678, 6680, 6682, 6684
                6686, 6688, 6690, 6692, 6694, 6696, 6698
                6700, 6702, 6704, 6706, 6708, 6710, 6712
                6714, 6716, 6718, 6720, 6722, 6724, 6726
                6728, 6730, 6732, 6734, 6736, 6738, 6740
                6742, 6744, 6746, 6748, 6750, 6752, 6754
                6756, 6758, 6760, 6762, 6764, 6766, 6768
                6770, 6772, 6774, 6776, 6778, 6780, 6782
                6784, 6786, 6788, 6790, 6792, 6794, 6796
                6798, 6800, 6802, 6804, 6806, 6808, 6810
                6812, 6814, 6816, 6818, 6820, 6822, 6824
                6826, 6828, 6830, 6832, 6834, 6836, 6838
                6840, 6842, 6844, 6846, 6848, 6850, 6852
                6854, 6856, 6858, 6860, 6862, 6864, 6866
                6868, 6870, 6872, 6874, 6876, 6878, 6880
                6882, 6884, 6886, 6888, 6890, 6892, 6894
                6896, 6898, 6900, 6902, 6904, 6906, 6908
                6910, 6912, 6914, 6916, 6918, 6920, 6922
                6924, 6926, 6928, 6930, 6932, 6934, 6936
                6938, 6940, 6942, 6944, 6946, 6948, 6950
                6952, 6954, 6956, 6958, 6960, 6962, 6964
                6966, 6968, 6970, 6972, 6974, 6976, 6978
                6980, 6982, 6984, 6986, 6988, 6990, 6992
                6994, 6996, 6998, 7000, 7002, 7004, 7006
                7008, 7010, 7012, 7014, 7016, 7018, 7020
                7022, 7024, 7026, 7028, 7030, 7032, 7034
                7036, 7038, 7040, 7042, 7044, 7046, 7048
                7050, 7052, 7054, 7056, 7058, 7060, 7062
                7064, 7066, 7068, 7070, 7072, 7074, 7076
                7078, 7080, 7082, 7084, 7086, 7088, 7090
                7092, 7094, 7096, 7098, 7100, 7102, 7104
                7106, 7108, 7110, 7112, 7114, 7116, 7118
                7120, 7122, 7124, 7126, 7128, 7130, 7132
                7134, 7136, 7138, 7140, 7142, 7144, 7146
                7148, 7150, 7152, 7154, 7156, 7158, 7160
                7162, 7164, 7166, 7168, 7170, 7172, 7174
                7176, 7178, 7180, 7182, 7184, 7186, 7188
                7190, 7192, 7194, 7196, 7198, 7200, 7202
                7204, 7206, 7208, 7210, 7212, 7214, 7216
                7218, 7220, 7222, 7224, 7226, 7228, 7230
                7232, 7234, 7236, 7238, 7240, 7242, 7244
                7246, 7248, 7250, 7252, 7254, 7256, 7258
                7260, 7262, 7264, 7266, 7268, 7270, 7272
                7274, 7276, 7278, 7280, 7282, 7284, 7286
                7288, 7290, 7292, 7294, 7296, 7298, 7300
                7302, 7304, 7306, 7308, 7310, 7312, 7314
                7316, 7318, 7320, 7322, 7324, 7326, 7328
                7330, 7332, 7334, 7336, 7338, 7340, 7342
                7344, 7346, 7348, 7350, 7352, 7354, 7356
                7358, 7360, 7362, 7364, 7366, 7368, 7370
                7372, 7374, 7376, 7378, 7380, 7382, 7384
                7386, 7388, 7390, 7392, 7394, 7396, 7398
                7400, 7402, 7404, 7406, 7408, 7410, 7412
                7414, 7416, 7418, 7420, 7422, 7424, 7426
                7428, 7430, 7432, 7434, 7436, 7438, 7440
                7442, 7444, 7446, 7448, 7450, 7452, 7454
                7456, 7458, 7460, 7462, 7464, 7466, 7468
                7470, 7472, 7474, 7476, 7478, 7480, 7482
                7484, 7486, 7488, 7490, 7492, 7494, 7496
                7498, 7500, 7502, 7504, 7506, 7508, 7510
                7512, 7514, 7516, 7518, 7520, 7522, 7524
                7526, 7528, 7530, 7532, 7534, 7536, 7538
                7540, 7542, 7544, 7546, 7548, 7550, 7552
                7554, 7556, 7558, 7560, 7562, 7564, 7566
                7568, 7570, 7572, 7574, 7576, 7578, 7580
                7582, 7584, 7586, 7588, 7590, 7592, 7594
                7596, 7598, 7600, 7602, 7604, 7606, 7608
                7610, 7612, 7614, 7616, 7618, 7620, 7622
                7624, 7626, 7628, 7630, 7632, 7634, 7636
                7638, 7640, 7642, 7644, 7646, 7648, 7650
                7652, 7654, 7656, 7658, 7660, 7662, 7664
                7666, 7668, 7670, 7672, 7674, 7676, 7678
                7680, 7682, 7684, 7686, 7688, 7690, 7692
                7694, 7696, 7698, 7700, 7702, 7704, 7706
                7708, 7710, 7712, 7714, 7716, 7718, 7720
                7722, 7724, 7726, 7728, 7730, 7732, 7734
                7736, 7738, 7740, 7742, 7744, 7746, 7748
                7750, 7752, 7754, 7756, 7758, 7760, 7762
                7764, 7766, 7768, 7770, 7772, 7774, 7776
                7778, 7780, 7782, 7784, 7786, 7788, 7790
                7792, 7794, 7796, 7798, 7800, 7802, 7804
                7806, 7808, 7810, 7812, 7814, 7816, 7818
                7820, 7822, 7824, 7826, 7828, 7830, 7832
                7834, 7836, 7838, 7840, 7842, 7844, 7846
                7848, 7850, 7852, 7854, 7856, 7858, 7860
                7862, 7864, 7866, 7868, 7870, 7872, 7874
                7876, 7878, 7880, 7882, 7884, 7887
  Non-zero exit status: 254
t/00_CappedCollection/22_alarm.t                     (Wstat: 256 (exited 1) Tests: 2 Failed: 1)
  Failed test:  2
  Non-zero exit status: 1
t/00_CappedCollection/23_cleaning_bench.t            (Wstat: 256 (exited 1) Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/00_CappedCollection/24_timeout.t                   (Wstat: 65280 (exited 255) Tests: 6 Failed: 1)
  Failed test:  6
  Non-zero exit status: 255
t/00_CappedCollection/25_cleaning_correctness.t      (Wstat: 65280 (exited 255) Tests: 5 Failed: 1)
  Failed test:  5
  Non-zero exit status: 255
t/00_CappedCollection/26_script_variable_protection.t (Wstat: 256 (exited 1) Tests: 42 Failed: 1)
  Failed test:  42
  Non-zero exit status: 1
t/00_compile.t                                       (Wstat: 256 (exited 1) Tests: 21 Failed: 1)
  Failed test:  21
  Non-zero exit status: 1
Files=29, Tests=8236, 36 wallclock secs ( 6.51 usr  0.64 sys + 21.96 cusr  3.90 csys = 33.01 CPU)
Result: FAIL
Failed 27/29 test programs. 3968/8236 subtests failed.
make: *** [Makefile:918: test_dynamic] Error 1

------------------------------
PREREQUISITES
------------------------------

Prerequisite modules loaded:

requires:

    Module              Need  Have    
    ------------------- ----- --------
    Const::Fast         0.014 0.014   
    Digest::SHA1        2.13  2.13    
    Mouse               0     v2.5.10 
    Params::Util        1.07  1.102   
    perl                5.010 5.039010
    Redis               1.976 2.000   
    Try::Tiny           0.18  0.31    

build_requires:

    Module              Need  Have    
    ------------------- ----- --------
    Data::UUID          1.217 1.227   
    ExtUtils::MakeMaker 0     7.70    
    JSON::XS            3.01  4.03    
    Net::EmptyPort      0     0       
    Sys::SigAction      0.21  0.23    
    Test::Exception     0.31  0.43    
    Test::NoWarnings    1.04  1.06    
    Test::RedisServer   0.04  0.23    

configure_requires:

    Module              Need  Have    
    ------------------- ----- --------
    ExtUtils::MakeMaker 0     7.70    


------------------------------
ENVIRONMENT AND OTHER CONTEXT
------------------------------

Environment variables:

    AUTOMATED_TESTING = 1
    LANG = en_US.UTF-8
    PATH = /home/sand/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/perl/bin:/usr/X11/bin
    PERL = /tmp/basesmoker-reloperl-wJoB/bin/perl
    PERL5LIB = /tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/lib
    PERL5OPT = 
    PERL5_CPANPLUS_IS_RUNNING = 2092
    PERL5_CPAN_IS_RUNNING = 2092
    PERL_CANARY_STABILITY_NOPROMPT = 1
    PERL_MM_USE_DEFAULT = 1
    PERL_USE_UNSAFE_INC = 1
    SHELL = /usr/bin/zsh
    TERM = screen

Perl special variables (and OS-specific diagnostics, for MSWin32):

    $^X = /tmp/basesmoker-reloperl-wJoB/bin/perl
    $UID/$EUID = 1005 / 1005
    $GID = 1005 1005
    $EGID = 1005 1005

Perl module toolchain versions installed:

    Module              Have    
    ------------------- --------
    CPAN                2.36    
    CPAN::Meta          2.150010
    Cwd                 3.90    
    ExtUtils::CBuilder  0.280240
    ExtUtils::Command   7.70    
    ExtUtils::Install   2.22    
    ExtUtils::MakeMaker 7.70    
    ExtUtils::Manifest  1.75    
    ExtUtils::ParseXS   3.51    
    File::Spec          3.90    
    JSON                4.10    
    JSON::PP            4.16    
    Module::Build       0.4234  
    Module::Signature   0.88    
    Parse::CPAN::Meta   2.150010
    Test2               1.302199
    Test::Harness       3.48    
    Test::More          1.302199
    YAML                1.31    
    YAML::Syck          1.34    
    version             0.9932  


--

Summary of my perl5 (revision 5 version 39 subversion 10) configuration:
  Commit id: c46c2bea6f111c45982b89c7e57b56125ff2e10c
  Platform:
    osname=linux
    osvers=5.4.0-176-generic
    archname=x86_64-linux
    uname='linux k93focal 5.4.0-176-generic #196-ubuntu smp fri mar 22 16:46:39 utc 2024 x86_64 x86_64 x86_64 gnulinux '
    config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254 -Dmyhostname=k93focal -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Dlibswanted=cl pthread socket inet nsl gdbm dbm malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat -Uuseithreads -Uuselongdouble -DEBUGGING=both'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=undef
    usemultiplicity=undef
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='cc'
    ccflags ='-fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    optimize='-O2 -g'
    cppflags='-fwrapv -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='9.4.0'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='cc'
    ldflags =' -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /usr/lib64
    libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    libc=libc-2.31.so
    so=so
    useshrplib=false
    libperl=libperl.a
    gnulibc_version='2.31'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,-E'
    cccdlflags='-fPIC'
    lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector-strong'


Characteristics of this binary (from libperl): 
  Compile-time options:
    DEBUGGING
    HAS_LONG_DOUBLE
    HAS_STRTOLD
    HAS_TIMES
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_HASH_FUNC_SIPHASH13
    PERL_HASH_USE_SBOX32
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    PERL_USE_DEVEL
    PERL_USE_SAFE_PUTENV
    USE_64_BIT_ALL
    USE_64_BIT_INT
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
  Built under linux
  Compiled at May  3 2024 17:15:00
  %ENV:
    PERL="/tmp/basesmoker-reloperl-wJoB/bin/perl"
    PERL5LIB="/tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/lib:/tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/arch:/tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/lib"
    PERL5OPT=""
    PERL5_CPANPLUS_IS_RUNNING="2092"
    PERL5_CPAN_IS_RUNNING="2092"
    PERL_CANARY_STABILITY_NOPROMPT="1"
    PERL_MM_USE_DEFAULT="1"
    PERL_USE_UNSAFE_INC="1"
  @INC:
    /tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/makepp-1.19-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/Alien-SNMP-MIBDEV-2.020000-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/App-nrun-v1.1.2-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/DBIx-Migration-Directories-0.12-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/Devel-Required-0.16-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/dta-tokwrap-0.98-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/downsexta-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/CGI-Application-NetNewsIface-0.0204-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/EJBCA-CrlPublish-0.60-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/Dpkg-1.22.6-0/blib/lib
    /tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/arch
    /tmp/loop_over_bdir-2084-yMTbXb/MP3-PodcastFetch-1.05-0/blib/lib
    /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10/x86_64-linux
    /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/site_perl/5.39.10
    /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10/x86_64-linux
    /home/sand/src/perl/repoperls/installed-perls/host/k93focal/v5.39.10/b254/lib/5.39.10
    .