From b9c49d01a0b3a9dd52f2c98dd0f2faac3753942b Mon Sep 17 00:00:00 2001 From: Erez Freiberger Date: Wed, 23 Aug 2017 08:34:31 +0300 Subject: [PATCH] always cleanup all signals in cleanup --- .../kubernetes/container_manager/scanning/job.rb | 4 ++-- .../kubernetes/container_manager/scanning/job_spec.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/models/manageiq/providers/kubernetes/container_manager/scanning/job.rb b/app/models/manageiq/providers/kubernetes/container_manager/scanning/job.rb index c1ebdf490d..63a1dcea96 100644 --- a/app/models/manageiq/providers/kubernetes/container_manager/scanning/job.rb +++ b/app/models/manageiq/providers/kubernetes/container_manager/scanning/job.rb @@ -221,6 +221,7 @@ def delete_pod end def cleanup(*args) + unqueue_all_signals image = target_entity if image # TODO: check job success / failure @@ -251,8 +252,7 @@ def cancel(*_args) if self.state != "canceling" # ensure change of states signal :cancel else - unqueue_all_signals - queue_signal(:cancel_job) + signal :cancel_job end end alias_method :cancel_job, :cleanup diff --git a/spec/models/manageiq/providers/kubernetes/container_manager/scanning/job_spec.rb b/spec/models/manageiq/providers/kubernetes/container_manager/scanning/job_spec.rb index 9e943347d9..4266b98f13 100644 --- a/spec/models/manageiq/providers/kubernetes/container_manager/scanning/job_spec.rb +++ b/spec/models/manageiq/providers/kubernetes/container_manager/scanning/job_spec.rb @@ -181,6 +181,16 @@ def fetch_oscap_arf end end + context "when timeout occures during pod_wait state" do + it "should clean all signals and not fail in the state machine" do + initial_q_size = MiqQueue.all.count + MiqQueue.put(**@job.send(:queue_options), :args => [:pod_wait,]) + expect(MiqQueue.all.count).to eq(initial_q_size + 1) + @job.cancel + expect(MiqQueue.all.count).to eq(initial_q_size) + end + end + context "#current_job_timeout" do it "checks for timeout in Settings" do stub_settings_merge(:container_scanning => {:scanning_job_timeout => '15.minutes'})