about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/OverIdx.pm9
-rw-r--r--lib/PublicInbox/V2Writable.pm3
-rwxr-xr-xscript/public-inbox-compact13
3 files changed, 6 insertions, 19 deletions
diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm
index 0e43aabc..5c20f1f0 100644
--- a/lib/PublicInbox/OverIdx.pm
+++ b/lib/PublicInbox/OverIdx.pm
@@ -14,21 +14,12 @@ use DBI qw(:sql_types); # SQL_BLOB
 sub dbh_new {
         my ($self) = @_;
         my $dbh = $self->SUPER::dbh_new;
-        $dbh->do('PRAGMA synchronous = OFF'); # commit_fsync instead
         $dbh->do('PRAGMA journal_mode = TRUNCATE');
         $dbh->do('PRAGMA cache_size = 80000');
         create_tables($dbh);
         $dbh;
 }
 
-sub commit_fsync {
-        my $fn = $_[0]->{filename};
-        if (open my $fh, '+<', $fn) {
-                $fh->sync;
-                close $fh;
-        }
-}
-
 sub get_counter ($$) {
         my ($dbh, $key) = @_;
         my $sth = $dbh->prepare_cached(<<'', undef, 1);
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index b858dcc7..a8117aaa 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -397,7 +397,7 @@ sub checkpoint {
 # issue a write barrier to ensure all data is visible to other processes
 # and read-only ops.  Order of data importance is: git > SQLite > Xapian
 sub barrier {
-        my ($self, $fsync) = @_;
+        my ($self) = @_;
 
         if (my $im = $self->{im}) {
                 $im->barrier;
@@ -416,7 +416,6 @@ sub barrier {
                 $_->remote_barrier foreach @$parts;
 
                 $over->barrier_wait; # wait for each Xapian partition
-                $over->commit_fsync if $fsync;
 
                 # last_commit is special, don't commit these until
                 # remote partitions are done:
diff --git a/script/public-inbox-compact b/script/public-inbox-compact
index b8aaa4bd..43e94609 100755
--- a/script/public-inbox-compact
+++ b/script/public-inbox-compact
@@ -36,15 +36,12 @@ sub commit_changes ($$$) {
         my ($im, $old, $new) = @_;
         my @st = stat($old) or die "failed to stat($old): $!\n";
 
-        for my $suf (qw(.pipe.lock -journal)) {
-                my $orig = "$old/over.sqlite3$suf";
-                link($orig, "$new/over.sqlite3$suf") and next;
-                next if $!{ENOENT};
-                die "failed to link $orig => $new/over.sqlite3$suf: $!\n";
+        my $over = "$old/over.sqlite3";
+        if (-f $over) {
+                require PublicInbox::Over;
+                $over = PublicInbox::Over->new($over);
+                $over->connect->sqlite_backup_to_file("$new/over.sqlite3");
         }
-        link("$old/over.sqlite3", "$new/over.sqlite3") or die
-                "failed to link {$old => $new}/over.sqlite3: $!\n";
-
         rename($old, "$new/old") or die "rename $old => $new/old: $!\n";
         chmod($st[2] & 07777, $new) or die "chmod $old: $!\n";
         rename($new, $old) or die "rename $new => $old: $!\n";