Skip to content

Commit

Permalink
Merge pull request #621 from puppetlabs/fix_bug_in_fail_pending_vm
Browse files Browse the repository at this point in the history
(maint) Fix bugs from redis and timeout notification updates.
  • Loading branch information
isaac-hammes authored Aug 24, 2023
2 parents 4481cdc + ef7000d commit 1210a4d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
8 changes: 3 additions & 5 deletions lib/vmpooler/api/v3.rb
Original file line number Diff line number Diff line change
Expand Up @@ -283,11 +283,9 @@ def component_to_test(match, labels_string)
def update_user_metrics(operation, vmname)
tracer.in_span("Vmpooler::API::V3.#{__method__}") do |span|
begin
backend.multi
backend.hget("vmpooler__vm__#{vmname}", 'tag:jenkins_build_url')
backend.hget("vmpooler__vm__#{vmname}", 'token:user')
backend.hget("vmpooler__vm__#{vmname}", 'template')
jenkins_build_url, user, poolname = backend.exec
jenkins_build_url = backend.hget("vmpooler__vm__#{vmname}", 'tag:jenkins_build_url')
user = backend.hget("vmpooler__vm__#{vmname}", 'token:user')
poolname = backend.hget("vmpooler__vm__#{vmname}", 'template')
poolname = poolname.gsub('.', '_')

if user
Expand Down
2 changes: 2 additions & 0 deletions lib/vmpooler/pool_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ def fail_pending_vm(vm, pool, timeout, timeout_notification, redis, exists: true
already_timed_out = time_since_clone > timeout
timing_out_soon = time_since_clone > timeout_notification && !redis.hget("vmpooler__vm__#{vm}", 'timeout_notification')

return true if !already_timed_out && !timing_out_soon

if already_timed_out
unless exists
remove_nonexistent_vm(vm, pool, redis)
Expand Down
3 changes: 3 additions & 0 deletions spec/unit/pool_manager_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -275,13 +275,15 @@

it 'takes no action if VM is not cloning' do
redis_connection_pool.with do |redis|
expect(logger).to_not receive(:log)
expect(subject.fail_pending_vm(vm, pool, timeout, timeout_notification, redis)).to eq(true)
end
end

it 'takes no action if VM is within timeout' do
redis_connection_pool.with do |redis|
redis.hset("vmpooler__vm__#{vm}", 'clone',Time.now.to_s)
expect(logger).to_not receive(:log)
expect(subject.fail_pending_vm(vm, pool, timeout, timeout_notification, redis)).to eq(true)
expect(redis.sismember("vmpooler__pending__#{pool}", vm)).to be(true)
end
Expand All @@ -307,6 +309,7 @@
it 'calls remove_nonexistent_vm if VM has exceeded timeout and does not exist' do
redis_connection_pool.with do |redis|
redis.hset("vmpooler__vm__#{vm}", 'clone',Date.new(2001,1,1).to_s)
expect(logger).to_not receive(:log)
expect(subject).to receive(:remove_nonexistent_vm).with(vm, pool, redis)
expect(subject.fail_pending_vm(vm, pool, timeout, timeout_notification, redis, exists: false)).to eq(true)
end
Expand Down

0 comments on commit 1210a4d

Please sign in to comment.