From 6c4b8761915827a3cd25802c0952653b453f70cd Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Fri, 23 Jan 2026 19:40:01 +0100 Subject: [PATCH] Improve error handling during cleanup --- src/ddns_service/cleanup.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/ddns_service/cleanup.py b/src/ddns_service/cleanup.py index 577ddc2..007b398 100644 --- a/src/ddns_service/cleanup.py +++ b/src/ddns_service/cleanup.py @@ -42,20 +42,37 @@ def cleanup_expired(app): if not ipv4_expired and not ipv6_expired: continue + ipv4_deleted = False + ipv6_deleted = False + if app.dns_service: if ipv4_expired: logging.info( f"Host expired: hostname={hostname.hostname} zone={hostname.zone} " f"ip={hostname.last_ipv4}" ) - app.dns_service.delete_record(hostname.hostname, hostname.zone, "A") + try: + app.dns_service.delete_record(hostname.hostname, hostname.zone, "A") + ipv4_deleted = True + except Exception as e: + logging.error( + f"DNS delete failed: hostname={hostname.hostname} " + f"zone={hostname.zone} type=A error={e}" + ) if ipv6_expired: logging.info( f"Host expired: hostname={hostname.hostname} zone={hostname.zone} " f"ip={hostname.last_ipv6}" ) - app.dns_service.delete_record(hostname.hostname, hostname.zone, "AAAA") + try: + app.dns_service.delete_record(hostname.hostname, hostname.zone, "AAAA") + ipv6_deleted = True + except Exception as e: + logging.error( + f"DNS delete failed: hostname={hostname.hostname} " + f"zone={hostname.zone} type=AAAA error={e}" + ) if app.email_service: app.email_service.send_expiry_notification( @@ -65,16 +82,15 @@ def cleanup_expired(app): ipv6_expired ) - # Clear IP addresses - if ipv4_expired: + # Clear IP addresses only if DNS delete succeeded + if ipv4_deleted: hostname.last_ipv4 = None - if ipv6_expired: + if ipv6_deleted: hostname.last_ipv6 = None - if ipv4_expired or ipv6_expired: + if ipv4_deleted or ipv6_deleted: hostname.save() - - expired_count += 1 + expired_count += 1 return expired_count