diff --git a/Netdisco/Changes b/Netdisco/Changes index ba149ef7..2cfbd7e6 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -11,6 +11,8 @@ [BUG FIXES] * Respect macsuck_bleed on broken topology detection + * Correct logic to prevent duplicate queuing of jobs during discover due + to previous change in admin table 2.020001 - 2013-12-08 diff --git a/Netdisco/lib/App/Netdisco/Core/Discover.pm b/Netdisco/lib/App/Netdisco/Core/Discover.pm index 70d8fd84..7a9a8194 100644 --- a/Netdisco/lib/App/Netdisco/Core/Discover.pm +++ b/Netdisco/lib/App/Netdisco/Core/Discover.pm @@ -848,14 +848,21 @@ sub discover_new_neighbors { next; } - # could fail if queued job already exists - try { - schema('netdisco')->resultset('Admin')->create({ - device => $ip, + # Don't queued if job already exists + my $is_queued = schema('netdisco')->resultset('Admin')->search( + { device => $ip, action => 'discover', - status => 'queued', - }); - }; + status => { -like => 'queued%' }, + } + )->single; + unless ($is_queued) { + schema('netdisco')->resultset('Admin')->create( + { device => $ip, + action => 'discover', + status => 'queued', + } + ); + } } }