]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei forget-mail-sync: rely on lei/store process
authorEric Wong <e@80x24.org>
Tue, 17 Aug 2021 08:52:41 +0000 (08:52 +0000)
committerEric Wong <e@80x24.org>
Wed, 18 Aug 2021 11:41:33 +0000 (11:41 +0000)
As implied in commit 6ff03ba2be9247f1
("lei export-kw: do not write directly to mail_sync.sqlite3"),
modifying mail_sync.sqlite3 directly can lead to conflicts
and making everything go through lei/store is easier.

lib/PublicInbox/LeiForgetMailSync.pm
lib/PublicInbox/LeiStore.pm

index c74ba25ddde7240afd08389015020442b366f3fb..940ca1b692c10d47faf7849d275ed1ac7c5c41e0 100644 (file)
@@ -15,13 +15,13 @@ use PublicInbox::LeiExportKw;
 sub lei_forget_mail_sync {
        my ($lei, @folders) = @_;
        my $lms = $lei->lms or return;
+       my $sto = $lei->_lei_store or return; # may disappear due to race
+       $sto->write_prepare;
        my $err = $lms->arg2folder($lei, \@folders);
        $lei->qerr(@{$err->{qerr}}) if $err->{qerr};
        return $lei->fail($err->{fail}) if $err->{fail};
-       delete $lms->{dbh};
-       $lms->lms_begin;
-       $lms->forget_folder($_) for @folders;
-       $lms->lms_commit;
+       $sto->ipc_do('lms_forget_folders', @folders);
+       my $wait = $sto->ipc_do('done');
 }
 
 *_complete_forget_mail_sync = \&PublicInbox::LeiExportKw::_complete_export_kw;
index 3f33d114a6c7e85d5a3513696f2c86e00fffdfd1..e8334187021b477ffeb42f27d517744e0dd4483f 100644 (file)
@@ -216,6 +216,12 @@ sub lms_mv_src {
        _lms_rw($self)->mv_src($folder, $oidbin, $id, $newbn);
 }
 
+sub lms_forget_folders {
+       my ($self, @folders) = @_;
+       my $lms = _lms_rw($self);
+       for my $f (@folders) { $lms->forget_folder($f) }
+}
+
 sub set_sync_info {
        my ($self, $oidhex, $folder, $id) = @_;
        _lms_rw($self)->set_src($oidhex, $folder, $id);