# HG changeset patch # User Matthew Wild # Date 1768419414 0 # Node ID e920ce2f64721a572a566640388698e9613d6192 # Parent de2651ba8bae99e8dde1668db9f2ccc57c0ccc98 mod_mam_smart_retention: Improve error handling during cleanup diff -r de2651ba8bae -r e920ce2f6472 mod_mam_smart_retention/mod_mam_smart_retention.lua --- a/mod_mam_smart_retention/mod_mam_smart_retention.lua Wed Jan 14 13:56:31 2026 +0000 +++ b/mod_mam_smart_retention/mod_mam_smart_retention.lua Wed Jan 14 19:36:54 2026 +0000 @@ -94,19 +94,22 @@ module:log("debug", "Expiring messages prior to %s for %s", expire_older_than, username); - local _, expire_before = archive:get(username, expire_older_than); - - local ok, err = archive:delete(username, { - ["end"] = expire_before; - ["before"] = min_retention ~= math.huge and (now() - min_retention) or nil; - }); - if ok then - local n_deleted = tonumber(ok); - if n_deleted then - n_messages = n_messages + n_deleted; + local item, expire_before = archive:get(username, expire_older_than); + if not item and expire_before ~= "item-not-found" then + module:log("warn", "Error fetching item '%s' for '%s': %s", expire_older_than, username, expire_before); + else + local ok, err = archive:delete(username, { + ["end"] = expire_before; + ["before"] = min_retention ~= math.huge and (now() - min_retention) or nil; + }); + if ok then + local n_deleted = tonumber(ok); + if n_deleted then + n_messages = n_messages + n_deleted; + end + else + module:log("warn", "Expiry failure: deleting messages before %s for %s: %s", expire_older_than, username, err); end - else - module:log("warn", "Expiry failure: deleting messages before %s for %s: %s", expire_older_than, username, err); end n_users = n_users + 1; async.sleep(0.1);