[devscripts] 05/06: Devscripts::Debbugs: Request bug status in chunks

James McCoy jamessan at debian.org
Wed Jun 3 05:02:26 UTC 2015


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

jamessan pushed a commit to branch master
in repository devscripts.

commit 980261776d8ab0c0314923038b7278772e6065bd
Author: James McCoy <jamessan at debian.org>
Date:   Wed Jun 3 00:34:14 2015 -0400

    Devscripts::Debbugs: Request bug status in chunks
    
    Post-Jessie there are rlimits set on apache processes which cause
    bugs.debian.org's SOAP handler to die when building large responses.
    Splitting the bug_status request into chunks avoids hitting those
    limits.
    
    Signed-off-by: James McCoy <jamessan at debian.org>
---
 debian/changelog          |  2 ++
 lib/Devscripts/Debbugs.pm | 23 ++++++++++++++---------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index c9ac0c5..2d2d2f7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -30,6 +30,8 @@ devscripts (2.15.5) UNRELEASED; urgency=medium
   * debuild: Recognize -jauto as a valid option. Based on a patch by Reiner
     Herrmann.  (Closes: #787276)
   * uscan: Fix Github example in man page.  (Closes: #757194)
+  * Devscripts::Debbugs: Retrieve bug status in chunks to avoid building large
+    responses on bugs.d.o.
 
   [ Dominique Dumont ]
   * licensecheck:
diff --git a/lib/Devscripts/Debbugs.pm b/lib/Devscripts/Debbugs.pm
index 1ac50b6..ee4ecdf 100644
--- a/lib/Devscripts/Debbugs.pm
+++ b/lib/Devscripts/Debbugs.pm
@@ -253,18 +253,23 @@ sub status {
 
     my $soap = init_soap();
 
-    my $bugs = $soap->get_status(@args);
+    my $result = {};
+    while (my @slice = splice(@args, 0, 500)) {
+	my $bugs = $soap->get_status(@slice);
 
-    if (@errors or not defined $bugs) {
-	my $error = join("\n", @errors);
-	die "Error while retrieving bug statuses from SOAP server: $error\n";
-    }
+	if (@errors or not defined $bugs) {
+	    my $error = join("\n", @errors);
+	    die "Error while retrieving bug statuses from SOAP server: $error\n";
+	}
 
-    my $result = $bugs->result();
+	my $tmp = $bugs->result();
 
-    if (@errors or not defined $result) {
-	my $error = join("\n", @errors);
-	die "Error while retrieving bug statuses from SOAP server: $error\n";
+	if (@errors or not defined $tmp) {
+	    my $error = join("\n", @errors);
+	    die "Error while retrieving bug statuses from SOAP server: $error\n";
+	}
+
+	%$result = (%$result, %$tmp);
     }
 
     return $result;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git



More information about the devscripts-devel mailing list