From d9a384d1d0d78e016139b8426819fc214dcde974 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Fri, 3 Mar 2023 14:17:38 +0000 Subject: [PATCH] #949 replace other occurances of now() with LOCALTIMESTAMP --- lib/App/Netdisco/JobQueue/PostgreSQL.pm | 8 ++++---- lib/App/Netdisco/Util/Nbtstat.pm | 4 ++-- lib/App/Netdisco/Util/Node.pm | 4 ++-- lib/App/Netdisco/Web/AuthN.pm | 2 +- .../Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm | 2 +- .../Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm | 4 ++-- lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm | 6 +++--- lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm | 2 +- lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm | 2 +- .../Netdisco/Worker/Plugin/Discover/Entities.pm | 4 ++-- .../Netdisco/Worker/Plugin/Discover/Properties.pm | 2 +- lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm | 8 ++++---- lib/App/Netdisco/Worker/Plugin/Expire.pm | 14 +++++++------- lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm | 2 +- lib/App/Netdisco/Worker/Plugin/MakeRancidConf.pm | 2 +- 15 files changed, 33 insertions(+), 33 deletions(-) diff --git a/lib/App/Netdisco/JobQueue/PostgreSQL.pm b/lib/App/Netdisco/JobQueue/PostgreSQL.pm index 2ec392bc..ec0c2581 100644 --- a/lib/App/Netdisco/JobQueue/PostgreSQL.pm +++ b/lib/App/Netdisco/JobQueue/PostgreSQL.pm @@ -168,7 +168,7 @@ sub jq_getsome { -exists => $jobs->search({ job => { '>' => $job->id }, status => { -like => 'queued-%' }, - started => \[q/> (now() - ?::interval)/, setting('jobs_stale_after')], + started => \[q/> (LOCALTIMESTAMP - ?::interval)/, setting('jobs_stale_after')], %job_properties, })->as_query, }], @@ -187,7 +187,7 @@ sub jq_locked { my @returned = (); my $rs = schema(vars->{'tenant'})->resultset('Admin')->search({ status => ('queued-'. setting('workers')->{'BACKEND'}), - started => \[q/> (now() - ?::interval)/, setting('jobs_stale_after')], + started => \[q/> (LOCALTIMESTAMP - ?::interval)/, setting('jobs_stale_after')], }); while (my $job = $rs->next) { @@ -216,7 +216,7 @@ sub jq_lock { ->search({ job => $job->id, status => 'queued' }, { for => 'update' }) ->update({ status => ('queued-'. setting('workers')->{'BACKEND'}), - started => \"now()", + started => \"LOCALTIMESTAMP", }); $happy = true if $updated > 0; @@ -319,7 +319,7 @@ sub jq_userlog { return schema(vars->{'tenant'})->resultset('Admin')->search({ username => $user, log => { '-not_like' => 'duplicate of %' }, - finished => { '>' => \"(now() - interval '5 seconds')" }, + finished => { '>' => \"(LOCALTIMESTAMP - interval '5 seconds')" }, })->with_times->all; } diff --git a/lib/App/Netdisco/Util/Nbtstat.pm b/lib/App/Netdisco/Util/Nbtstat.pm index d44e16ab..a21f0624 100644 --- a/lib/App/Netdisco/Util/Nbtstat.pm +++ b/lib/App/Netdisco/Util/Nbtstat.pm @@ -150,13 +150,13 @@ and the current NetBIOS user C. Adds new entry or time stamps matching one. Optionally a literal string can be passed in the second argument for the -C timestamp, otherwise the current timestamp (C) is used. +C timestamp, otherwise the current timestamp (C) is used. =cut sub store_nbt { my ( $hash_ref, $now ) = @_; - $now ||= 'now()'; + $now ||= 'LOCALTIMESTAMP'; schema(vars->{'tenant'})->resultset('NodeNbt')->update_or_create( { mac => $hash_ref->{'mac'}, diff --git a/lib/App/Netdisco/Util/Node.pm b/lib/App/Netdisco/Util/Node.pm index dc0dd278..1ac8f4d6 100644 --- a/lib/App/Netdisco/Util/Node.pm +++ b/lib/App/Netdisco/Util/Node.pm @@ -160,13 +160,13 @@ The C entry is optional. The update will mark old entries for this IP as no longer C. Optionally a literal string can be passed in the second argument for the -C timestamp, otherwise the current timestamp (C) is used. +C timestamp, otherwise the current timestamp (C) is used. =cut sub store_arp { my ($hash_ref, $now) = @_; - $now ||= 'now()'; + $now ||= 'LOCALTIMESTAMP'; my $ip = $hash_ref->{'ip'}; my $mac = NetAddr::MAC->new(mac => ($hash_ref->{'node'} || $hash_ref->{'mac'} || '')); my $name = $hash_ref->{'dns'}; diff --git a/lib/App/Netdisco/Web/AuthN.pm b/lib/App/Netdisco/Web/AuthN.pm index e4e7118f..29ff6ddd 100644 --- a/lib/App/Netdisco/Web/AuthN.pm +++ b/lib/App/Netdisco/Web/AuthN.pm @@ -120,7 +120,7 @@ post '/login' => sub { event => (sprintf 'Login (%s)', ($api ? 'API' : 'WebUI')), details => param('return_url'), }); - $user->update({ last_on => \'now()' }); + $user->update({ last_on => \'LOCALTIMESTAMP' }); if ($api) { # from the internals of Dancer::Plugin::Auth::Extensible diff --git a/lib/App/Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm b/lib/App/Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm index fe8c4a10..44f4dc54 100644 --- a/lib/App/Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm +++ b/lib/App/Netdisco/Web/Plugin/AdminTask/NodeMonitor.pm @@ -59,7 +59,7 @@ ajax '/ajax/control/admin/nodemonitor/update' => require_role admin => sub { active => (param('active') ? \'true' : \'false'), why => param('why'), cc => param('cc'), - date => \'now()', + date => \'LOCALTIMESTAMP', }); }); }; diff --git a/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm b/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm index 44a29800..fe7cbe32 100644 --- a/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm +++ b/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm @@ -44,7 +44,7 @@ ajax '/ajax/control/admin/pseudodevice/add' => require_role admin => sub { os => 'netdisco', os_ver => pretty_version($App::Netdisco::VERSION, 3), layers => param('layers'), - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', is_pseudo => \'true', }); return unless $device; @@ -101,7 +101,7 @@ ajax '/ajax/control/admin/pseudodevice/update' => require_role admin => sub { $device->update({layers => param('layers')}); # and update last_discover, since device properties changed - $device->update({last_discover => \'now()'}); + $device->update({last_discover => \'LOCALTIMESTAMP'}); }); }; diff --git a/lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm b/lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm index d074d5a0..e4e0173e 100644 --- a/lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm +++ b/lib/App/Netdisco/Web/Plugin/Report/IpInventory.pm @@ -77,7 +77,7 @@ get '/ajax/content/report/ipinventory' => require_login sub { 'dns', \'true AS active', \'false AS node', - \qq/replace( date_trunc( 'minute', age( now(), device.last_discover ) ) ::text, 'mon', 'month') AS age/, + \qq/replace( date_trunc( 'minute', age( LOCALTIMESTAMP, device.last_discover ) ) ::text, 'mon', 'month') AS age/, 'device.vendor', \'null AS nbname', @@ -91,7 +91,7 @@ get '/ajax/content/report/ipinventory' => require_login sub { { join => ['oui', 'netbios'], columns => [qw( ip mac time_first time_last dns active)], '+select' => [ \'true AS node', - \qq/replace( date_trunc( 'minute', age( now(), me.time_last ) ) ::text, 'mon', 'month') AS age/, + \qq/replace( date_trunc( 'minute', age( LOCALTIMESTAMP, me.time_last ) ) ::text, 'mon', 'month') AS age/, 'oui.company', 'netbios.nbname', ], @@ -107,7 +107,7 @@ get '/ajax/content/report/ipinventory' => require_login sub { \'null AS dns', 'active', \'true AS node', - \qq/replace( date_trunc( 'minute', age( now(), time_last ) ) ::text, 'mon', 'month') AS age/, + \qq/replace( date_trunc( 'minute', age( LOCALTIMESTAMP, time_last ) ) ::text, 'mon', 'month') AS age/, 'oui.company', 'nbname' ], diff --git a/lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm b/lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm index 570f81c4..f09fbd5f 100644 --- a/lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm +++ b/lib/App/Netdisco/Worker/Plugin/AddPseudoDevice.pm @@ -52,7 +52,7 @@ register_worker({ phase => 'main' }, sub { os => 'netdisco', os_ver => pretty_version($App::Netdisco::VERSION, 3), layers => '00000100', - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', is_pseudo => \'true', }); return unless $device; diff --git a/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm b/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm index 1b8fc8ff..8b789b99 100644 --- a/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm @@ -24,7 +24,7 @@ register_worker({ phase => 'early', my ($job, $workerconf) = @_; my $device = $job->device; - # would be possible just to use now() on updated records, but by using this + # would be possible just to use LOCALTIMESTAMP on updated records, but by using this # same value for them all, we can if we want add a job at the end to # select and do something with the updated set (see set archive, below) vars->{'timestamp'} = ($job->is_offline and $job->entered) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm index 4f0032ad..fe2cc9d4 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm @@ -28,7 +28,7 @@ my $clean = sub { serial => $device->serial, model => $device->model, fru => \'false', - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }); }; @@ -95,7 +95,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { serial => Encode::decode('UTF-8', $e_serial->{$entry}), fru => $e_fru->{$entry}, description => Encode::decode('UTF-8', $e_descr->{$entry}), - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }; } diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm index 1242860e..435cf848 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm @@ -58,7 +58,7 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub { $device->set_column( snmp_class => $snmp->class ); $device->set_column( snmp_engineid => unpack('H*', ($snmp->snmpEngineID || '')) ); - $device->set_column( last_discover => \'now()' ); + $device->set_column( last_discover => \'LOCALTIMESTAMP' ); # protection for failed SNMP gather if ($device->in_storage and not $device->is_pseudo) { diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm b/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm index 2e6518db..03164606 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm @@ -59,7 +59,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { native => $native, egress_tag => 'f', vlantype => $type, - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }; ++$this_port_vlans{$vlan}; @@ -78,7 +78,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { native => $native, egress_tag => ($native eq 't' ? 'f' : 't'), vlantype => $type, - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }; ++$this_port_vlans{$vlan}; @@ -109,7 +109,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { push @devicevlans, { vlan => $vlan, description => $v_name->{$entry}, - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }; } @@ -120,7 +120,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { push @devicevlans, { vlan => $vlan, description => (sprintf "VLAN %d", $vlan), - last_discover => \'now()', + last_discover => \'LOCALTIMESTAMP', }; } diff --git a/lib/App/Netdisco/Worker/Plugin/Expire.pm b/lib/App/Netdisco/Worker/Plugin/Expire.pm index 34e93485..03093f48 100644 --- a/lib/App/Netdisco/Worker/Plugin/Expire.pm +++ b/lib/App/Netdisco/Worker/Plugin/Expire.pm @@ -15,7 +15,7 @@ register_worker({ phase => 'main' }, sub { schema('netdisco')->txn_do(sub { schema('netdisco')->resultset('Device')->search({ -or => [ 'vendor' => undef, 'vendor' => { '!=' => 'netdisco' }], - last_discover => \[q/< (now() - ?::interval)/, + last_discover => \[q/< (LOCALTIMESTAMP - ?::interval)/, (setting('expire_devices') * 86400)], })->delete(); }); @@ -27,12 +27,12 @@ register_worker({ phase => 'main' }, sub { ? setting('expire_nodeip_freshness') : setting('expire_nodes')); if ($freshness) { schema('netdisco')->resultset('NodeIp')->search({ - time_last => \[q/< (now() - ?::interval)/, ($freshness * 86400)], + time_last => \[q/< (LOCALTIMESTAMP - ?::interval)/, ($freshness * 86400)], })->delete(); } schema('netdisco')->resultset('Node')->search({ - time_last => \[q/< (now() - ?::interval)/, + time_last => \[q/< (LOCALTIMESTAMP - ?::interval)/, (setting('expire_nodes') * 86400)], })->delete(); }); @@ -44,13 +44,13 @@ register_worker({ phase => 'main' }, sub { ? setting('expire_nodeip_freshness') : setting('expire_nodes_archive')); if ($freshness) { schema('netdisco')->resultset('NodeIp')->search({ - time_last => \[q/< (now() - ?::interval)/, ($freshness * 86400)], + time_last => \[q/< (LOCALTIMESTAMP - ?::interval)/, ($freshness * 86400)], })->delete(); } schema('netdisco')->resultset('Node')->search({ -not_bool => 'active', - time_last => \[q/< (now() - ?::interval)/, + time_last => \[q/< (LOCALTIMESTAMP - ?::interval)/, (setting('expire_nodes_archive') * 86400)], })->delete(); }); @@ -67,7 +67,7 @@ register_worker({ phase => 'main' }, sub { if (setting('expire_jobs') and setting('expire_jobs') > 0) { schema('netdisco')->txn_do_locked('admin', 'EXCLUSIVE', sub { schema('netdisco')->resultset('Admin')->search({ - entered => \[q/< (now() - ?::interval)/, + entered => \[q/< (LOCALTIMESTAMP - ?::interval)/, (setting('expire_jobs') * 86400)], })->delete(); }); @@ -76,7 +76,7 @@ register_worker({ phase => 'main' }, sub { if (setting('expire_userlog') and setting('expire_userlog') > 0) { schema('netdisco')->txn_do_locked('admin', 'EXCLUSIVE', sub { schema('netdisco')->resultset('UserLog')->search({ - creation => \[q/< (now() - ?::interval)/, + creation => \[q/< (LOCALTIMESTAMP - ?::interval)/, (setting('expire_userlog') * 86400)], })->delete(); }); diff --git a/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm b/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm index 0ded2519..7b0fa81a 100644 --- a/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm @@ -25,7 +25,7 @@ register_worker({ phase => 'early', my ($job, $workerconf) = @_; my $device = $job->device; - # would be possible just to use now() on updated records, but by using this + # would be possible just to use LOCALTIMESTAMP on updated records, but by using this # same value for them all, we can if we want add a job at the end to # select and do something with the updated set (see set archive, below) vars->{'timestamp'} = ($job->is_offline and $job->entered) diff --git a/lib/App/Netdisco/Worker/Plugin/MakeRancidConf.pm b/lib/App/Netdisco/Worker/Plugin/MakeRancidConf.pm index 59bcb9ae..de9ea171 100644 --- a/lib/App/Netdisco/Worker/Plugin/MakeRancidConf.pm +++ b/lib/App/Netdisco/Worker/Plugin/MakeRancidConf.pm @@ -47,7 +47,7 @@ register_worker({ phase => 'main' }, sub { my $devices = schema('netdisco')->resultset('Device')->search(undef, { '+columns' => { old => - \['age(now(), last_discover) > ?::interval', $down_age] }, + \['age(LOCALTIMESTAMP, last_discover) > ?::interval', $down_age] }, }); $config->{groups} ||= { default => 'any' };