]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiImport.pm
lei_mail_sync: account for non-unique cases
[public-inbox.git] / lib / PublicInbox / LeiImport.pm
index 40530914ead73ba1847f73eeb096db46efa88d65..3c30db8d2b1f093f24701dda6d13de7cacdc8027 100644 (file)
@@ -37,8 +37,12 @@ sub pmdir_cb { # called via wq_io_do from LeiPmdir->each_mdir_fn
        substr($folder, 0, 0) = 'maildir:'; # add prefix
        my $lse = $self->{lse} //= $self->{lei}->{sto}->search;
        my $lms = $self->{-lms_ro} //= $self->{lei}->lms; # may be 0 or undef
-       my $oidbin = $lms ? $lms->name_oidbin($folder, $bn) : undef;
-       my @docids = defined($oidbin) ? $lse->over->oidbin_exists($oidbin) : ();
+       my @oidbin = $lms ? $lms->name_oidbin($folder, $bn) : ();
+       @oidbin > 1 and $self->{lei}->err("W: $folder/*/$$bn not unique:\n",
+                               map { "\t".unpack('H*', $_)."\n" } @oidbin);
+       my %seen;
+       my @docids = sort { $a <=> $b } grep { !$seen{$_}++ }
+                       map { $lse->over->oidbin_exists($_) } @oidbin;
        my $vmd = $self->{-import_kw} ? { kw => $kw } : undef;
        if (scalar @docids) {
                $lse->kw_changed(undef, $kw, \@docids) or return;