about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/LeiMailSync.pm3
-rw-r--r--lib/PublicInbox/V2Writable.pm11
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/PublicInbox/LeiMailSync.pm b/lib/PublicInbox/LeiMailSync.pm
index 91cd1c93..c6cd1bc5 100644
--- a/lib/PublicInbox/LeiMailSync.pm
+++ b/lib/PublicInbox/LeiMailSync.pm
@@ -47,7 +47,8 @@ sub lms_write_prepare { ($_[0]->{dbh} //= dbh_new($_[0], 1)); $_[0] }
 sub lms_pause {
         my ($self) = @_;
         $self->{fmap} = {};
-        delete $self->{dbh};
+        my $dbh = delete $self->{dbh};
+        $dbh->do('PRAGMA optimize') if $dbh;
 }
 
 sub create_tables {
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index fcd7ffe2..d04cdda6 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -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) {