From: lpsolit%gmail.com <> Date: Fri, 8 Jul 2005 01:33:45 +0000 (+0000) Subject: Bug 299211: whine.pl fails if derive_groups is required - Patch by Marc Schumann... X-Git-Tag: bugzilla-2.20rc1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f20886b99e4b9c77baec231dc9a5fbdfe9faef59;p=thirdparty%2Fbugzilla.git Bug 299211: whine.pl fails if derive_groups is required - Patch by Marc Schumann r=LpSolit a=justdave --- diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index b745ad65f0..a626294206 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -68,6 +68,8 @@ use base qw(Exporter); COMMENT_COLS + DERIVE_GROUPS_TABLES_ALREADY_LOCKED + UNLOCK_ABORT RELATIONSHIPS @@ -174,6 +176,10 @@ use constant DEFAULT_QUERY_NAME => '(Default query)'; # The column length for displayed (and wrapped) bug comments. use constant COMMENT_COLS => 80; +# Used to indicate to User::new and User::new_from_login calls +# that the derive_groups tables are already locked +use constant DERIVE_GROUPS_TABLES_ALREADY_LOCKED => 1; + # used by Bugzilla::DB to indicate that tables are being unlocked # because of error use constant UNLOCK_ABORT => 1; diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 464ddffafc..f19369c24a 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -74,8 +74,6 @@ use Bugzilla::Attachment; use Bugzilla::BugMail; use Bugzilla::Constants; -use constant TABLES_ALREADY_LOCKED => 1; - # Note that this line doesn't actually import these variables for some reason, # so I have to use them as $::template and $::vars in the package code. use vars qw($template $vars); @@ -865,7 +863,7 @@ sub notify { my @new_cc_list; foreach my $cc (split(/[, ]+/, $flag->{'type'}->{'cc_list'})) { my $ccuser = Bugzilla::User->new_from_login($cc, - TABLES_ALREADY_LOCKED) + DERIVE_GROUPS_TABLES_ALREADY_LOCKED) || next; next if $flag->{'target'}->{'bug'}->{'restricted'} diff --git a/whine.pl b/whine.pl index 8be68f42cc..259195720f 100755 --- a/whine.pl +++ b/whine.pl @@ -228,9 +228,10 @@ sub get_next_event { $dbh->bz_lock_tables('whine_schedules WRITE', 'whine_events READ', - 'profiles READ', + 'profiles WRITE', 'groups READ', - 'user_group_map READ'); + 'group_group_map READ', + 'user_group_map WRITE'); # Get the event ID for the first pending schedule $sth_next_scheduled_event->execute; @@ -239,7 +240,8 @@ sub get_next_event { return undef unless $fetched; my ($eventid, $owner_id, $subject, $body) = @{$fetched}; - my $owner = Bugzilla::User->new($owner_id); + my $owner = Bugzilla::User->new($owner_id, + DERIVE_GROUPS_TABLES_ALREADY_LOCKED); my $whineatothers = $owner->in_group('bz_canusewhineatothers');