hydra-notify: Fix processing notifications

[?]
Aug 12, 2019, 3:28 PM
4ZCUCACYWDLCZUKIH2OLFC4NCPBE2YO7Y7AZ7WL3AESZQ3TSIYXQC

Dependencies

  • [2] WYELTQMO Separate payload elements using \t
  • [3] IE2PRAQU hydra-queue-runner: Send build notifications
  • [4] 32KJOERM Turn hydra-notify into a daemon

Change contents

  • edit in src/script/hydra-notify at line 99
    [3.2725][3.2725:2791]()
    my $notify = $dbh->func("pg_notifies");
    next if !$notify;
  • replacement in src/script/hydra-notify at line 100
    [3.2792][3.2792:2904]()
    my ($channelName, $pid, $payload) = @$notify;
    #print STDERR "got '$channelName' from $pid: $payload\n";
    [3.2792]
    [3.2904]
    while (my $notify = $dbh->func("pg_notifies")) {
  • replacement in src/script/hydra-notify at line 102
    [3.2905][2.163:203]()
    my @payload = split /\t/, $payload;
    [3.2905]
    [3.2944]
    my ($channelName, $pid, $payload) = @$notify;
    #print STDERR "got '$channelName' from $pid: $payload\n";
    my @payload = split /\t/, $payload;
  • replacement in src/script/hydra-notify at line 107
    [3.2945][3.2945:3440]()
    eval {
    if ($channelName eq "build_started") {
    buildStarted(int($payload[0]));
    } elsif ($channelName eq "build_finished") {
    my $buildId = int($payload[0]);
    my $build = $db->resultset('Builds')->find($buildId)
    or die "build $buildId does not exist\n";
    buildFinished($build, @payload[1..$#payload]);
    } elsif ($channelName eq "step_finished") {
    stepFinished(int($payload[0]), int($payload[1]));
    [3.2945]
    [3.3440]
    eval {
    if ($channelName eq "build_started") {
    buildStarted(int($payload[0]));
    } elsif ($channelName eq "build_finished") {
    my $buildId = int($payload[0]);
    my $build = $db->resultset('Builds')->find($buildId)
    or die "build $buildId does not exist\n";
    buildFinished($build, @payload[1..$#payload]);
    } elsif ($channelName eq "step_finished") {
    stepFinished(int($payload[0]), int($payload[1]));
    }
    };
    if ($@) {
    print STDERR "error processing message '$payload' on channel '$channelName': $@\n";
  • edit in src/script/hydra-notify at line 122
    [3.3450][3.3450:3563]()
    };
    if ($@) {
    print STDERR "error processing message '$payload' on channel '$channelName': $@\n";