+ } elsif ($line =~ /\Abarrier_init (\d+)\n\z/) {
+ my $n = $1 - 1;
+ die "barrier in-progress\n" if defined $barrier;
+ $barrier = { map { $_ => 1 } (0..$n) };
+ } elsif ($line =~ /\Abarrier (\d+)\n\z/) {
+ my $part = $1;
+ die "no barrier in-progress\n" unless defined $barrier;
+ delete $barrier->{$1} or die "unknown barrier: $part\n";
+ if ((scalar keys %$barrier) == 0) {
+ $barrier = undef;
+ $self->commit_txn_lazy;
+ print $barrier_note "barrier_done\n" or die
+ "print failed to barrier note: $!";
+ }
+ } elsif ($line =~ /\AD ([a-f0-9]{40,}) (.*)\n\z/s) {
+ my ($oid, $mid) = ($1, $2);
+ $self->begin_txn_lazy;
+ $self->remove_by_oid($oid, $mid);