]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Xapcmd.pm
xapcmd: delay over->check_inodes trigger
[public-inbox.git] / lib / PublicInbox / Xapcmd.pm
index 337978bd1a8799b79d10a315341333b06cf6ae3c..a57fa5597030191a14e07e274104789e306fc50e 100644 (file)
@@ -23,6 +23,7 @@ sub commit_changes ($$$$) {
 
        $SIG{INT} or die 'BUG: $SIG{INT} not handled';
        my @old_shard;
+       my $over_chg;
 
        while (my ($old, $newdir) = each %$tmp) {
                next if $old eq ''; # no invalid paths
@@ -39,6 +40,7 @@ sub commit_changes ($$$$) {
                        my $tmp_over = "$new/over.sqlite3";
                        $over->connect->sqlite_backup_to_file($tmp_over);
                        $over = undef;
+                       $over_chg = 1;
                }
 
                if (!defined($new)) { # culled shard
@@ -59,6 +61,10 @@ sub commit_changes ($$$$) {
                                die "failed to remove $prev: $!\n";
                }
        }
+
+       # trigger ->check_inodes in read-only daemons
+       syswrite($im->{lockfh}, '.') if $over_chg;
+
        remove_tree(@old_shard);
        $tmp = undef;
        if (!$opt->{-coarse_lock}) {