]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Msgmap.pm
msgmap: tmp_clone: use MEMORY journal upon reconnect
[public-inbox.git] / lib / PublicInbox / Msgmap.pm
index 51b6a68c8547e81a4eaf9168000354fea548085a..eee8d6ca58b96adbb46746c1c23c848154ee804c 100644 (file)
@@ -14,6 +14,7 @@ use DBI;
 use DBD::SQLite;
 use File::Temp qw(tempfile);
 use PublicInbox::Over;
+use PublicInbox::Spawn;
 
 sub new {
        my ($class, $git_dir, $writable) = @_;
@@ -50,6 +51,7 @@ sub new_file {
 sub tmp_clone {
        my ($self, $dir) = @_;
        my ($fh, $fn) = tempfile('msgmap-XXXXXXXX', EXLOCK => 0, DIR => $dir);
+       PublicInbox::Spawn::set_nodatacow(fileno($fh));
        my $tmp;
        if ($self->{dbh}->can('sqlite_backup_to_dbh')) {
                $tmp = ref($self)->new_file($fn, 2);
@@ -246,6 +248,7 @@ sub atfork_parent {
        $self->{dbh} and die 'BUG: tmp_clone dbh not prepared for parent';
        defined($self->{filename}) or die 'BUG: {filename} not defined';
        $self->{dbh} = PublicInbox::Over::dbh_new($self, 2);
+       $self->{dbh}->do('PRAGMA journal_mode = MEMORY');
 }
 
 sub atfork_prepare {