From f20886b99e4b9c77baec231dc9a5fbdfe9faef59 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Fri, 8 Jul 2005 01:33:45 +0000 Subject: Bug 299211: whine.pl fails if derive_groups is required - Patch by Marc Schumann r=LpSolit a=justdave --- Bugzilla/Constants.pm | 6 ++++++ Bugzilla/Flag.pm | 4 +--- whine.pl | 8 +++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index b745ad65f..a62629420 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 464ddffaf..f19369c24 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 8be68f42c..259195720 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'); -- cgit v1.2.3-24-g4f1b