[dh-make-perl] 02/02: AptContents: avoid empty cpu allocation slots when distributing multiple contents files tor parsing

Damyan Ivanov dmn at moszumanska.debian.org
Sat Feb 17 08:50:09 UTC 2018


This is an automated email from the git hooks/post-receive script.

dmn pushed a commit to branch master
in repository dh-make-perl.

commit 2ad9499e96bede8a42092489ba8d868fdc9aea92
Author: Damyan Ivanov <dmn at debian.org>
Date:   Sat Feb 17 08:47:44 2018 +0000

    AptContents: avoid empty cpu allocation slots when distributing multiple contents files tor parsing
    
    simply cap the number of cpu slots to the number of files to avoid
    leaving cpu slots without assigned files, which later results in
    callint cat-file with no arguments, leading to hangs reading from STDIN
---
 lib/Debian/AptContents.pm |  2 ++
 t/AptContents.t           | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/lib/Debian/AptContents.pm b/lib/Debian/AptContents.pm
index 4295a91..04792e0 100644
--- a/lib/Debian/AptContents.pm
+++ b/lib/Debian/AptContents.pm
@@ -182,6 +182,8 @@ invocation.
 sub _distribute_files {
     my ( $self, $files, $cpus ) = @_;
 
+    $cpus = scalar(@$files) if scalar(@$files) < $cpus;
+
     return $files unless $cpus > 1;
 
     my @data = map( { file => $_, size => -s $_ }, @$files );
diff --git a/t/AptContents.t b/t/AptContents.t
index 9fd54c1..a7c5282 100755
--- a/t/AptContents.t
+++ b/t/AptContents.t
@@ -29,6 +29,16 @@ eval { Debian::AptContents->new() };
 ok( $@, 'AptContents->new with no homedir dies' );
 like( $@, qr/No homedir given/, 'should say why it died' );
 
+{
+    my @c_files = glob('t/contents/*');
+    my @slots = Debian::AptContents->_distribute_files( \@c_files,
+        scalar(@c_files) + 2 );
+
+    ok( scalar(@slots) == scalar(@c_files),
+        "Distributing files on more CPUs results in no empty slots" )
+        or diag @slots;
+}
+
 my $apt_contents = instance();
 
 isnt( $apt_contents, undef, 'should create' );

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/dh-make-perl.git



More information about the Pkg-perl-cvs-commits mailing list