local function insert_and_unlock_additional_keys (key, value, lock_id, lifetime_milliseconds, idle_timeout_milliseconds, additional_keys) if is_locked_by_another_owner(key) then return { "locked_by_other" } end if not owns_locks(additional_keys, lock_id) then return { "lock_not_owned" } end if get_existing_entry(key) then return { "already_exists" } end set_value(key, value, nil, lifetime_milliseconds, idle_timeout_milliseconds, additional_keys) release_locks(additional_keys, lock_id) return { "ok", value } end return scriptResult(insert_and_unlock_additional_keys(KEYS[1], ARGV[3], ARGV[4], parseOptionalNumber(ARGV[5]), parseOptionalNumber(ARGV[6]), cjson.decode(ARGV[7])))