From cf1e5bcfeacd5b2a3b8e82052a65e69cd1e0cc57 Mon Sep 17 00:00:00 2001 From: "Eric Wong (Contractor, The Linux Foundation)" Date: Mon, 19 Mar 2018 08:14:40 +0000 Subject: [PATCH] skeleton: barrier init requires a lock Writing to the main skeleton pipe requires a lock since it's shared with partition processes. --- lib/PublicInbox/SearchIdxSkeleton.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/SearchIdxSkeleton.pm b/lib/PublicInbox/SearchIdxSkeleton.pm index beb17b9f..51a88fda 100644 --- a/lib/PublicInbox/SearchIdxSkeleton.pm +++ b/lib/PublicInbox/SearchIdxSkeleton.pm @@ -149,9 +149,12 @@ sub index_skeleton_real ($$) { # write to the subprocess sub barrier_init { my ($self, $nparts) = @_; - my $w = $_[0]->{w}; - print $w "barrier_init $nparts\n" or die "failed to write: $!"; - $w->flush or die "failed to flush: $!"; + my $w = $self->{w}; + my $err; + $self->_lock_acquire; + print $w "barrier_init $nparts\n" or $err = "failed to write: $!\n"; + $self->_lock_release; + die $err if $err; } sub barrier_wait { -- 2.44.0