|
| 1 | +-- KEYS - None |
| 2 | +-- ARGV - None |
| 3 | + |
| 4 | +local state_db = "6" |
| 5 | +local config_db = "4" |
| 6 | + |
| 7 | +local result = {} |
| 8 | + |
| 9 | +redis.call('SELECT', config_db) |
| 10 | +local severity_keys = redis.call('KEYS', 'SUPPRESS_ASIC_SDK_HEALTH_EVENT*') |
| 11 | +if #severity_keys == 0 then |
| 12 | + return result |
| 13 | +end |
| 14 | + |
| 15 | +local max_events = {} |
| 16 | +for i = 1, #severity_keys, 1 do |
| 17 | + local max_event = redis.call('HGET', severity_keys[i], 'max_events') |
| 18 | + if max_event then |
| 19 | + max_events[string.sub(severity_keys[i], 32, -1)] = tonumber(max_event) |
| 20 | + end |
| 21 | +end |
| 22 | + |
| 23 | +if not next (max_events) then |
| 24 | + return result |
| 25 | +end |
| 26 | + |
| 27 | +redis.call('SELECT', state_db) |
| 28 | +local events = {} |
| 29 | + |
| 30 | +local event_keys = redis.call('KEYS', 'ASIC_SDK_HEALTH_EVENT_TABLE*') |
| 31 | + |
| 32 | +if #event_keys == 0 then |
| 33 | + return result |
| 34 | +end |
| 35 | + |
| 36 | +for i = 1, #event_keys, 1 do |
| 37 | + local severity = redis.call('HGET', event_keys[i], 'severity') |
| 38 | + if max_events[severity] ~= nil then |
| 39 | + if events[severity] == nil then |
| 40 | + events[severity] = {} |
| 41 | + end |
| 42 | + table.insert(events[severity], event_keys[i]) |
| 43 | + end |
| 44 | +end |
| 45 | + |
| 46 | +for severity in pairs(max_events) do |
| 47 | + local number_received_events = 0 |
| 48 | + if events[severity] ~= nil then |
| 49 | + number_received_events = #events[severity] |
| 50 | + end |
| 51 | + if number_received_events > max_events[severity] then |
| 52 | + table.sort(events[severity]) |
| 53 | + local number_to_eliminate = number_received_events - max_events[severity] |
| 54 | + for i = 1, number_to_eliminate, 1 do |
| 55 | + redis.call('DEL', events[severity][i]) |
| 56 | + end |
| 57 | + table.insert(result, severity .. " events: maximum " .. max_events[severity] .. ", received " .. number_received_events .. ", eliminated " .. number_to_eliminate) |
| 58 | + else |
| 59 | + table.insert(result, severity .. " events: maximum " .. max_events[severity] .. ", received " .. number_received_events .. ", not exceeding the maximum") |
| 60 | + end |
| 61 | +end |
| 62 | + |
| 63 | +return result |
0 commit comments