]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
sqlite: PRAGMA optimize on close
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index 36b84f5708ae27ff52e01d082b630bbdb1c439a9..d04cdda6e3dc2eeaff75096fa92c25e0e96ecd0e 100644 (file)
@@ -622,7 +622,18 @@ sub done {
                my $m = $err ? 'rollback' : 'commit';
                eval { $mm->{dbh}->$m };
                $err .= "msgmap $m: $@\n" if $@;
+               eval { $mm->{dbh}->do('PRAGMA optimize') };
+               $err .= "msgmap optimize: $@\n" if $@;
        }
+       if ($self->{oidx} && $self->{oidx}->{dbh}) {
+               if ($err) {
+                       eval { $self->{oidx}->rollback_lazy };
+                       $err .= "overview rollback: $@\n" if $@;
+               }
+               eval { $self->{oidx}->{dbh}->do('PRAGMA optimize') };
+               $err .= "overview optimize: $@\n" if $@;
+       }
+
        my $shards = delete $self->{idx_shards};
        if ($shards) {
                for (@$shards) {
@@ -1031,7 +1042,7 @@ sub sync_prepare ($$) {
                        my $req = { %$sync, oid => $oid };
                        $self->git->cat_async($oid, $unindex_oid, $req);
                }
-               $self->git->cat_async_wait;
+               $self->git->async_wait_all;
        }
        return 0 if $sync->{quit};
        if (!$regen_max) {
@@ -1113,7 +1124,7 @@ sub unindex_todo ($$$) {
                $self->git->cat_async($1, $unindex_oid, { %$sync, oid => $1 });
        }
        close $fh or die "git log failed: \$?=$?";
-       $self->git->cat_async_wait;
+       $self->git->async_wait_all;
 
        return unless $sync->{-opt}->{prune};
        my $after = scalar keys %$unindexed;
@@ -1245,7 +1256,7 @@ sub xapian_only {
                        index_xap_step($self, $sync, $art_beg, 1);
                }
        }
-       $self->git->cat_async_wait;
+       $self->git->async_wait_all;
        $self->{ibx}->cleanup;
        $self->done;
 }