Trying to use the newer ->sqlite_backup_to_dbh method doesn't
seem worth it, as we'll have to support DBD::SQLite <= 1.60
another decade or more.
Dumping 'msgmap-XXXXXXX' into $INBOX_DIR can appear a bit
confusing to users, so give it a "mm_tmp-$PID-XXXXXXXX" name
to emphasize it's a temporary file tied to a given PID.
We also don't want to penalize read-only daemons with
loading File::Temp, so do it lazily.
# This is maintained by ::SearchIdx
package PublicInbox::Msgmap;
use strict;
# This is maintained by ::SearchIdx
package PublicInbox::Msgmap;
use strict;
use DBI;
use DBD::SQLite;
use DBI;
use DBD::SQLite;
-use File::Temp qw(tempfile);
use PublicInbox::Over;
use PublicInbox::Spawn;
use PublicInbox::Over;
use PublicInbox::Spawn;
# used to keep track of used numeric mappings for v2 reindex
sub tmp_clone {
my ($self, $dir) = @_;
# used to keep track of used numeric mappings for v2 reindex
sub tmp_clone {
my ($self, $dir) = @_;
- my ($fh, $fn) = tempfile('msgmap-XXXXXXXX', EXLOCK => 0, DIR => $dir);
+ require File::Temp;
+ my $tmp = "mm_tmp-$$-XXXXXX";
+ my ($fh, $fn) = File::Temp::tempfile($tmp, EXLOCK => 0, DIR => $dir);
PublicInbox::Spawn::nodatacow_fd(fileno($fh));
PublicInbox::Spawn::nodatacow_fd(fileno($fh));
- my $tmp;
- if ($self->{dbh}->can('sqlite_backup_to_dbh')) {
- $tmp = ref($self)->new_file($fn, 2);
- $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
- $self->{dbh}->sqlite_backup_to_dbh($tmp->{dbh});
- } else { # DBD::SQLite <= 1.61_01
- $self->{dbh}->sqlite_backup_to_file($fn);
- $tmp = ref($self)->new_file($fn, 2);
- $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
- }
+ $self->{dbh}->sqlite_backup_to_file($fn);
+ $tmp = ref($self)->new_file($fn, 2);
+ $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
$tmp->{pid} = $$;
$tmp;
}
$tmp->{pid} = $$;
$tmp;
}