-# Copyright (C) 2018-2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2018-2020 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# used to interface with a single Xapian shard in V2 repos.
use strict;
use warnings;
use base qw(PublicInbox::SearchIdx);
+use IO::Handle (); # autoflush
sub new {
my ($class, $v2writable, $shard) = @_;
pipe($r, $w) or die "pipe failed: $!\n";
binmode $r, ':raw';
binmode $w, ':raw';
+ $w->autoflush(1);
my $pid = fork;
defined $pid or die "fork failed: $!\n";
if ($pid == 0) {
if (my $w = $self->{w}) {
print $w "$bytes $artnum $oid $mid0\n", $$msgref or die
"failed to write shard $!\n";
- $w->flush or die "failed to flush: $!\n";
} else {
$$msgref = undef;
$self->begin_txn_lazy;
my ($self) = @_;
if (my $w = $self->{w}) {
print $w "barrier\n" or die "failed to print: $!";
- $w->flush or die "failed to flush: $!";
} else {
$self->commit_txn_lazy;
}