summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbugreport%peshkin.net <>2005-08-31 01:04:39 +0200
committerbugreport%peshkin.net <>2005-08-31 01:04:39 +0200
commitb93b2208addb1677903ba2901d9c4f22c212086a (patch)
tree67095308835af1eccd3059fa126aefcb11e0363d
parent830eca78e2f0e5526ff6d5c9ada3239b9175d4b4 (diff)
downloadbugzilla-b93b2208addb1677903ba2901d9c4f22c212086a.tar.gz
bugzilla-b93b2208addb1677903ba2901d9c4f22c212086a.tar.xz
Bug 305126: Fix table locks after removal of derive_groups
Patch by Joel Peshkin <bugreport@peshkin.net> r=lpsolit, a=myk
-rwxr-xr-xattachment.cgi10
-rwxr-xr-xpost_bug.cgi3
-rwxr-xr-xprocess_bug.cgi11
-rwxr-xr-xvotes.cgi1
-rwxr-xr-xwhine.pl4
5 files changed, 11 insertions, 18 deletions
diff --git a/attachment.cgi b/attachment.cgi
index 86cd1698d..c406516a3 100755
--- a/attachment.cgi
+++ b/attachment.cgi
@@ -1190,12 +1190,10 @@ sub update
# cc, bug_group_map, user_group_map, and groups are in here so we
# can check the permissions of flag requestees and email addresses
# on the flag type cc: lists via the CanSeeBug
- # function call in Flag::notify. group_group_map is in here in case
- # Bugzilla::User needs to rederive groups. profiles and
- # user_group_map would be READ locks instead of WRITE locks if it
- # weren't for derive_groups, which needs to write to those tables.
- 'bugs WRITE', 'profiles WRITE', 'email_setting READ',
- 'cc READ', 'bug_group_map READ', 'user_group_map WRITE',
+ # function call in Flag::notify. group_group_map is in here si
+ # Bugzilla::User can flatten groups.
+ 'bugs WRITE', 'profiles READ', 'email_setting READ',
+ 'cc READ', 'bug_group_map READ', 'user_group_map READ',
'group_group_map READ', 'groups READ');
# Get a copy of the attachment record before we make changes
diff --git a/post_bug.cgi b/post_bug.cgi
index 77f076139..f32ef9b14 100755
--- a/post_bug.cgi
+++ b/post_bug.cgi
@@ -370,7 +370,8 @@ while (MoreSQLData()) {
# Add the bug report to the DB.
$dbh->bz_lock_tables('bugs WRITE', 'bug_group_map WRITE', 'longdescs WRITE',
'cc WRITE', 'keywords WRITE', 'dependencies WRITE',
- 'bugs_activity WRITE', 'groups READ', 'user_group_map READ',
+ 'bugs_activity WRITE', 'groups READ',
+ 'user_group_map READ', 'group_group_map READ',
'keyworddefs READ', 'fielddefs READ');
SendSQL($sql);
diff --git a/process_bug.cgi b/process_bug.cgi
index b60f5aa60..8f325dd61 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -620,8 +620,6 @@ if ($action eq Param('move-button-text')) {
$comment .= "If all went well, please mark this bug verified, and paste\n";
$comment .= "in a link to the new bug. Otherwise, reopen this bug.\n";
- # $user->derive_groups() has already been called by Bugzilla->login(),
- # so the related tables do not need to be locked.
$dbh->bz_lock_tables('bugs WRITE', 'bugs_activity WRITE', 'duplicates WRITE',
'longdescs WRITE', 'profiles READ', 'groups READ',
'bug_group_map READ', 'group_group_map READ',
@@ -1266,16 +1264,11 @@ foreach my $id (@idlist) {
# whether we do LOW_PRIORITY ...
$dbh->bz_lock_tables("bugs $write", "bugs_activity $write",
"cc $write", "cc AS selectVisible_cc $write",
- "profiles $write", "dependencies $write", "votes $write",
+ "profiles READ", "dependencies $write", "votes $write",
"products READ", "components READ",
"keywords $write", "longdescs $write", "fielddefs $write",
"bug_group_map $write", "flags $write", "duplicates $write",
- # user_group_map would be a READ lock except that Flag::process
- # may call Flag::notify, which creates a new user object,
- # which might call derive_groups, which wants a WRITE lock on that
- # table. group_group_map is in here at all because derive_groups
- # needs it.
- "user_group_map $write", "group_group_map READ", "flagtypes READ",
+ "user_group_map READ", "group_group_map READ", "flagtypes READ",
"flaginclusions AS i READ", "flagexclusions AS e READ",
"keyworddefs READ", "groups READ", "attachments READ",
"group_control_map AS oldcontrolmap READ",
diff --git a/votes.cgi b/votes.cgi
index 13f1ec7e2..b4401a373 100755
--- a/votes.cgi
+++ b/votes.cgi
@@ -134,6 +134,7 @@ sub show_user {
$dbh->bz_lock_tables('bugs READ', 'products READ', 'votes WRITE',
'cc READ', 'bug_group_map READ', 'user_group_map READ',
+ 'group_group_map READ',
'cc AS selectVisible_cc READ', 'groups READ');
if ($canedit && $bug_id) {
diff --git a/whine.pl b/whine.pl
index c4a454775..068774ca0 100755
--- a/whine.pl
+++ b/whine.pl
@@ -228,10 +228,10 @@ sub get_next_event {
$dbh->bz_lock_tables('whine_schedules WRITE',
'whine_events READ',
- 'profiles WRITE',
+ 'profiles READ',
'groups READ',
'group_group_map READ',
- 'user_group_map WRITE');
+ 'user_group_map READ');
# Get the event ID for the first pending schedule
$sth_next_scheduled_event->execute;