summaryrefslogtreecommitdiffstats
path: root/extensions/Push
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-08-26 07:55:24 +0200
committerDylan William Hardison <dylan@hardison.net>2018-08-26 07:55:24 +0200
commit9263f397e701f25af395e8cdee48c87ee3327157 (patch)
treecc7f6b6beef8947090a108701ca34316a5c8edb8 /extensions/Push
parent23b94e8410d90e9e15584d3a9220b6bb214f4220 (diff)
parentd57aefa118802606ea7cc424aaa62173be9eec41 (diff)
downloadbugzilla-9263f397e701f25af395e8cdee48c87ee3327157.tar.gz
bugzilla-9263f397e701f25af395e8cdee48c87ee3327157.tar.xz
Merge remote-tracking branch 'bmo/mojo'
Diffstat (limited to 'extensions/Push')
-rw-r--r--extensions/Push/lib/Connector/Phabricator.pm18
-rw-r--r--extensions/Push/lib/Push.pm70
-rw-r--r--extensions/Push/t/ReviewBoard.t3
3 files changed, 51 insertions, 40 deletions
diff --git a/extensions/Push/lib/Connector/Phabricator.pm b/extensions/Push/lib/Connector/Phabricator.pm
index e59ba6c0d..33e2bb6ad 100644
--- a/extensions/Push/lib/Connector/Phabricator.pm
+++ b/extensions/Push/lib/Connector/Phabricator.pm
@@ -21,10 +21,8 @@ use Bugzilla::Extension::PhabBugz::Policy;
use Bugzilla::Extension::PhabBugz::Project;
use Bugzilla::Extension::PhabBugz::Revision;
use Bugzilla::Extension::PhabBugz::Util qw(
- add_security_sync_comments
get_attachment_revisions
get_bug_role_phids
- get_security_sync_groups
);
use Bugzilla::Extension::Push::Constants;
@@ -68,8 +66,6 @@ sub send {
my $is_public = is_public($bug);
- my @set_groups = get_security_sync_groups($bug);
-
my $revisions = get_attachment_revisions($bug);
my $group_change =
@@ -86,24 +82,14 @@ sub send {
));
$revision->make_public();
}
- elsif ( !$is_public && !@set_groups ) {
- Bugzilla->audit(sprintf(
- 'Making revision %s for bug %s private due to unkown Bugzilla groups: %s',
- $revision->id,
- $bug->id,
- join(', ', @set_groups)
- ));
- $revision->make_private(['secure-revision']);
- add_security_sync_comments([$revision], $bug);
- }
elsif ( !$is_public && $group_change ) {
Bugzilla->audit(sprintf(
'Giving revision %s a custom policy for bug %s',
$revision->id,
$bug->id
));
- my @set_project_names = map { "bmo-" . $_ } @set_groups;
- $revision->make_private(\@set_project_names);
+ my $set_project_names = [ map { "bmo-" . $_->name } @{ $bug->groups_in } ];
+ $revision->make_private($set_project_names);
}
# Subscriber list of the private revision should always match
diff --git a/extensions/Push/lib/Push.pm b/extensions/Push/lib/Push.pm
index 670b2aa56..ab640da81 100644
--- a/extensions/Push/lib/Push.pm
+++ b/extensions/Push/lib/Push.pm
@@ -8,8 +8,7 @@
package Bugzilla::Extension::Push::Push;
use 5.10.1;
-use strict;
-use warnings;
+use Moo;
use Bugzilla::Logging;
use Bugzilla::Extension::Push::BacklogMessage;
@@ -23,22 +22,12 @@ use Bugzilla::Extension::Push::Option;
use Bugzilla::Extension::Push::Queue;
use Bugzilla::Extension::Push::Util;
use DateTime;
+use Try::Tiny;
-sub new {
- my ($class) = @_;
- my $self = {};
- bless($self, $class);
- $self->{is_daemon} = 0;
- return $self;
-}
-
-sub is_daemon {
- my ($self, $value) = @_;
- if (defined $value) {
- $self->{is_daemon} = $value ? 1 : 0;
- }
- return $self->{is_daemon};
-}
+has 'is_daemon' => (
+ is => 'rw',
+ default => 0,
+);
sub start {
my ($self) = @_;
@@ -50,12 +39,49 @@ sub start {
$connector->backlog->reset_backoff();
}
- while(1) {
- if ($self->_dbh_check()) {
- $self->_reload();
- $self->push();
+ my $pushd_loop = IO::Async::Loop->new;
+ my $main_timer = IO::Async::Timer::Periodic->new(
+ first_interval => 0,
+ interval => POLL_INTERVAL_SECONDS,
+ reschedule => 'drift',
+ on_tick => sub {
+ if ( $self->_dbh_check() ) {
+ $self->_reload();
+ try {
+ $self->push();
+ }
+ catch {
+ FATAL($_);
+ };
+ }
+ },
+ );
+ if ( Bugzilla->datadog ) {
+ my $dog_timer = IO::Async::Timer::Periodic->new(
+ interval => 120,
+ reschedule => 'drift',
+ on_tick => sub { $self->heartbeat },
+ );
+ $pushd_loop->add($dog_timer);
+ $dog_timer->start;
+ }
+
+ $pushd_loop->add($main_timer);
+ $main_timer->start;
+ $pushd_loop->run;
+}
+
+sub heartbeat {
+ my ($self) = @_;
+ my $dd = Bugzilla->datadog('bugzilla.pushd');
+
+ $dd->gauge('scheduled_jobs', Bugzilla->dbh->selectrow_array('SELECT COUNT(*) FROM push'));
+
+ foreach my $connector ($self->connectors->list) {
+ if ($connector->enabled) {
+ my $lcname = lc $connector->name;
+ $dd->gauge("${lcname}.backlog", Bugzilla->dbh->selectrow_array('SELECT COUNT(*) FROM push_backlog WHERE connector = ?', undef, $connector->name));
}
- sleep(POLL_INTERVAL_SECONDS);
}
}
diff --git a/extensions/Push/t/ReviewBoard.t b/extensions/Push/t/ReviewBoard.t
index 3eb54760c..c752e34ef 100644
--- a/extensions/Push/t/ReviewBoard.t
+++ b/extensions/Push/t/ReviewBoard.t
@@ -7,14 +7,13 @@
# defined by the Mozilla Public License, v. 2.0.
use strict;
use warnings;
-use lib qw( . lib );
+use lib qw( . lib local/lib/perl5 );
use Test::More;
use Bugzilla;
use Bugzilla::Extension;
use Bugzilla::Attachment;
use Scalar::Util 'blessed';
-use YAML;
BEGIN {
eval {