From cd50c8ea650b2b630c75d1a56581135e62243605 Mon Sep 17 00:00:00 2001 From: Mahima Singh <105724608+smahima27@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:18:14 +0530 Subject: [PATCH] Prevent re-queueing requests already marked as failed - Check request status before re-queueing in clone_vm rescue block - Only re-queue if status is not 'failed' - Prevents infinite loop when permanent errors are detected --- lib/vmpooler/pool_manager.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index a136c87..fe55d74 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -423,7 +423,13 @@ module Vmpooler if request_id $logger.log('s', "[!] [#{pool_name}] failed while cloning VM for request #{request_id} with an error: #{e}") @redis.with_metrics do |redis| - redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool_name}:1:#{request_id}") + # Only re-queue if the request wasn't already marked as failed (e.g., by permanent error detection) + request_status = redis.hget("vmpooler__odrequest__#{request_id}", 'status') + if request_status != 'failed' + redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool_name}:1:#{request_id}") + else + $logger.log('s', "[!] [#{pool_name}] Request #{request_id} already marked as failed, not re-queueing") + end end else $logger.log('s', "[!] [#{pool_name}] failed while cloning VM with an error: #{e}")