From cd886cc2a585da2c0affca6205038d3075a3ec65 Mon Sep 17 00:00:00 2001
From: Damyan Ivanov <dmn@debian.org>
Date: Thu, 11 Nov 2021 11:15:38 +0000
Subject: [PATCH] postpone db update for when it is really needed

would help lower the load when massive changes to the db are made

the db will be updated when a new song needs to be queued, and until
that need arises the db may be changed again

the (not that big) delay for db update when new song is needed is not
a problem, because it is about keeping the playlist full -- not an
urgent need
---
 bin/mpd-feeder | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/bin/mpd-feeder b/bin/mpd-feeder
index 401e696..3ba9432 100755
--- a/bin/mpd-feeder
+++ b/bin/mpd-feeder
@@ -266,6 +266,8 @@ SQL
             $self->db_set_option( generation => $db_generation );
 
             $db->commit;
+
+            $db_needs_update = 0;
         }
         catch {
             my $err = $@;
@@ -280,6 +282,7 @@ SQL
 
     method db_find_suitable_songs($num) {
         $self->connect_db;
+        $self->update_db;
 
         my @result;
         my $sth = $db->prepare_cached(<<SQL);
@@ -359,7 +362,6 @@ SQL
         }
         $self->connect_mpd;
         my $f = $mpd->send( \@commands );
-        warn "here";
         $f->on_fail( sub { die @_ } );
         $f->on_done(
             sub {
@@ -368,8 +370,6 @@ SQL
                 $callback->(@_) if $callback;
             }
         );
-
-        warn "here";
     }
 
     method prepare_to_wait_idle {
@@ -378,10 +378,9 @@ SQL
             sub {
                 warn $_ for @_;
                 my $result = shift;
-                use JSON; warn to_json($result);
 
                 if ( $result->{changed} eq 'database' ) {
-                    $self->update_db(1);
+                    $db_needs_update = 1;
                     $self->prepare_to_wait_idle;
                 }
                 elsif ( $result->{changed} eq 'playlist' ) {
@@ -439,7 +438,6 @@ if (@ARGV) {
     }
 }
 
-
 $feeder->queue_songs( undef, sub { $feeder->run } );
 
 $feeder->mpd->loop->run;
-- 
2.39.5