From: Eric Wong (Contractor, The Linux Foundation) Date: Mon, 19 Mar 2018 08:14:40 +0000 (+0000) Subject: skeleton: barrier init requires a lock X-Git-Tag: v1.1.0-pre1~162 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=cf1e5bcfeacd5b2a3b8e82052a65e69cd1e0cc57;p=public-inbox.git skeleton: barrier init requires a lock Writing to the main skeleton pipe requires a lock since it's shared with partition processes. --- 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 {