[DEVOPS-1126] throttle github status calls to remain under api ratelimits

[?]
Nov 9, 2018, 4:06 PM
YH2ITHUECMN35OXXCDIDT4QQBP5PPMOCRRCNVQHVXYVKMYOFNNLQC

Dependencies

  • [2] NSRWW6LC Add a plugin to interact with the github status API.

Change contents

  • edit in src/lib/Hydra/Plugin/GithubStatus.pm at line 9
    [2.220]
    [2.220]
    use List::Util qw(max);
  • edit in src/lib/Hydra/Plugin/GithubStatus.pm at line 69
    [2.2674]
    [2.2674]
    my $limit = $res->header("X-RateLimit-Limit");
    my $limitRemaining = $res->header("X-RateLimit-Remaining");
    my $limitReset = $res->header("X-RateLimit-Reset");
    my $now = time();
    my $diff = $limitReset - $now;
    my $delay = (($limit - $limitRemaining) / $diff) * 5;
    if ($limitRemaining < 1000) {
    $delay = max(1, $delay);
    }
    if ($limitRemaining < 2000) {
    print STDERR "GithubStatus ratelimit $limitRemaining/$limit, resets in $diff, sleeping $delay\n";
    sleep $delay;
    } else {
    print STDERR "GithubStatus ratelimit $limitRemaining/$limit, resets in $diff\n";
    }