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);