From 822854f0c3a6d49a613a1ec3817a464461b8fcd9 Mon Sep 17 00:00:00 2001 From: digimer Date: Tue, 7 Nov 2023 15:32:57 -0500 Subject: [PATCH] Fixed a bug in scan-ipmitool that was causing duplicate history entries * Increased logging to scan-ipmitool and scan-network to help trace a duplicate DB entry bug. Signed-off-by: digimer --- scancore-agents/scan-ipmitool/scan-ipmitool | 3 ++- scancore-agents/scan-network/scan-network | 24 ++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/scancore-agents/scan-ipmitool/scan-ipmitool b/scancore-agents/scan-ipmitool/scan-ipmitool index a07a10c9..b5a64105 100755 --- a/scancore-agents/scan-ipmitool/scan-ipmitool +++ b/scancore-agents/scan-ipmitool/scan-ipmitool @@ -1147,7 +1147,8 @@ AND if (ref($anvil->data->{old}{$host_name}{temperature}{$scan_ipmitool_sensor_name})) { # Update the existing entry, if needed. - my $temperature_uuid = $anvil->data->{old}{$host_name}{temperature}{$scan_ipmitool_sensor_name}{temperature_uuid}; + $temperature_uuid = $anvil->data->{old}{$host_name}{temperature}{$scan_ipmitool_sensor_name}{temperature_uuid}; + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { temperature_uuid => $temperature_uuid }}); } # Generate and store the UUID. diff --git a/scancore-agents/scan-network/scan-network b/scancore-agents/scan-network/scan-network index 1d3deb70..7c6292f5 100755 --- a/scancore-agents/scan-network/scan-network +++ b/scancore-agents/scan-network/scan-network @@ -378,7 +378,7 @@ OR ;"; my $results = $anvil->Database->query({query => $query, source => $THIS_FILE, line => __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { results => $results, count => $count, }}); @@ -386,18 +386,18 @@ OR { my $variable_uuid = $row->[0]; my $variable_name = $row->[1]; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { 's1:variable_name' => $variable_name, 's2:variable_uuid' => $variable_uuid, }}); # Find out of there are any records to remove at all. my $query = "SELECT history_id FROM history.variables WHERE variable_uuid = ".$anvil->Database->quote($variable_uuid)." AND modified_date <= '".$old_timestamp."';"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { query => $query }}); my $results = $anvil->Database->query({uuid => $uuid, query => $query, source => $THIS_FILE, line => __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { results => $results, count => $count, }}); @@ -406,11 +406,11 @@ OR { # Find how many records will be left. If it's 0, we'll use an OFFSET 1. my $query = "SELECT history_id FROM history.variables WHERE variable_uuid = ".$anvil->Database->quote($variable_uuid)." AND modified_date > '".$old_timestamp."';"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { query => $query }}); my $results = $anvil->Database->query({uuid => $uuid, query => $query, source => $THIS_FILE, line => __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { results => $results, count => $count, }}); @@ -418,7 +418,7 @@ OR { # At least one record will be left, we can do a simple delete. my $query = "DELETE FROM history.variables WHERE variable_uuid = ".$anvil->Database->quote($variable_uuid)." AND modified_date <= '".$old_timestamp."';"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { query => $query }}); push @{$queries}, $query; } else @@ -427,10 +427,10 @@ OR foreach my $row (@{$results}) { my $history_id = $row->[0]; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { history_id => $history_id }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { history_id => $history_id }}); my $query = "DELETE FROM history.variables WHERE variable_uuid = ".$anvil->Database->quote($variable_uuid)." AND history_id = '".$history_id."';"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { query => $query }}); push @{$queries}, $query; } } @@ -447,7 +447,7 @@ OR records => $commits, host => $anvil->Get->host_name_from_uuid({host_uuid => $uuid}), }}); - $anvil->Database->write({debug => 3, uuid => $uuid, query => $queries, source => $THIS_FILE, line => __LINE__}); + $anvil->Database->write({debug => 2, uuid => $uuid, query => $queries, source => $THIS_FILE, line => __LINE__}); undef $queries; } } @@ -1924,6 +1924,7 @@ WHERE # Read in the RX/TX values, set to '0' if not found. my ($rx_bytes, $rx_variable_uuid, $modified_date) = $anvil->Database->read_variable({ + debug => 2, variable_name => "bond::".$bond_name."::rx_bytes", variable_source_uuid => $bond_uuid, variable_source_table => "bonds", @@ -1933,6 +1934,7 @@ WHERE rx_variable_uuid => $rx_variable_uuid, }}); (my $tx_bytes, my $tx_variable_uuid, $modified_date) = $anvil->Database->read_variable({ + debug => 2, variable_name => "bond::".$bond_name."::tx_bytes", variable_source_uuid => $bond_uuid, variable_source_table => "bonds", @@ -2026,6 +2028,7 @@ WHERE # Read in the RX/TX values, set to '0' if not found. my ($rx_bytes, $rx_variable_uuid, $modified_date) = $anvil->Database->read_variable({ + debug => 2, variable_name => "bridge::".$bridge_name."::rx_bytes", variable_source_uuid => $bridge_uuid, variable_source_table => "bridges", @@ -2035,6 +2038,7 @@ WHERE rx_variable_uuid => $rx_variable_uuid, }}); (my $tx_bytes, my $tx_variable_uuid, $modified_date) = $anvil->Database->read_variable({ + debug => 2, variable_name => "bridge::".$bridge_name."::tx_bytes", variable_source_uuid => $bridge_uuid, variable_source_table => "bridges",