diff --git a/node_external_ip_controller_async.py b/node_external_ip_controller_async.py index b311669..6b3c42e 100644 --- a/node_external_ip_controller_async.py +++ b/node_external_ip_controller_async.py @@ -125,7 +125,13 @@ async def watch_services(v1, external_ips_update_queue): logger.debug( f"Processing event type: {event['type']} for service: {service.metadata.name}" ) - external_ips = await external_ips_update_queue.get() + while True: + # maintain only last set of external_ips by popping everything + # and putting back the final one when it runs empty + external_ips = await external_ips_update_queue.get() + if external_ips_update_queue.empty(): + external_ips_update_queue.put(external_ips) + break logger.debug(f"Retrieved external IPs: {external_ips}") await update_service_annotation(v1, service, external_ips) logger.debug(f"Service updated: {service.metadata.name}")