Mercurial > prosody-modules
changeset 6359:e920ce2f6472
mod_mam_smart_retention: Improve error handling during cleanup
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 14 Jan 2026 19:36:54 +0000 |
| parents | de2651ba8bae |
| children | 3e8bd71d39bb |
| files | mod_mam_smart_retention/mod_mam_smart_retention.lua |
| diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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);
