]> git.ktnx.net Git - mpd-feeder.git/commitdiff
postpone db update for when it is really needed
authorDamyan Ivanov <dmn@debian.org>
Thu, 11 Nov 2021 11:15:38 +0000 (11:15 +0000)
committerDamyan Ivanov <dmn@debian.org>
Thu, 11 Nov 2021 11:15:38 +0000 (11:15 +0000)
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

index 401e696d19700dc9836b1f7bcff49e689f8d2219..3ba943234f6900e1ab32abb342edfa7e7a2931fb 100755 (executable)
@@ -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;