← Back
Editing: neural_save_unlock.lua
-- Lua script to save and unlock ANN in redis -- Uses the following keys and argv -- key1 - prefix for ANN -- key2 - prefix for profile -- key3 - old key -- argv1 - compressed ANN -- argv2 - profile as JSON -- argv3 - expire in seconds -- argv4 - current time -- argv5 - ROC Thresholds -- argv6 - optional PCA -- argv7 - optional providers_meta (JSON) -- argv8 - optional norm_stats (JSON) local now = tonumber(ARGV[4]) redis.call('ZADD', KEYS[2], now, ARGV[2]) redis.call('HSET', KEYS[1], 'ann', ARGV[1]) redis.call('HSET', KEYS[1], 'roc_thresholds', ARGV[5]) if ARGV[6] and ARGV[6] ~= '' then redis.call('HSET', KEYS[1], 'pca', ARGV[6]) end if ARGV[7] and ARGV[7] ~= '' then redis.call('HSET', KEYS[1], 'providers_meta', ARGV[7]) end if ARGV[8] and ARGV[8] ~= '' then redis.call('HSET', KEYS[1], 'norm_stats', ARGV[8]) end redis.call('HDEL', KEYS[1], 'lock') redis.call('HDEL', KEYS[3], 'lock') redis.call('HSET', KEYS[3], 'obsolete', '1') redis.call('EXPIRE', KEYS[3], 600) redis.call('EXPIRE', KEYS[1], tonumber(ARGV[3])) -- Bound the profile zset lifetime to the ANN lifetime so a fully idle rule's -- profile registry eventually disappears instead of accumulating tombstones redis.call('EXPIRE', KEYS[2], tonumber(ARGV[3])) -- expire in 10m, to not face race condition with other rspamd replicas refill deleted keys redis.call('EXPIRE', KEYS[3] .. '_spam_set', 600) redis.call('EXPIRE', KEYS[3] .. '_ham_set', 600) return 1
Save File
Cancel