diff options
author | bugreport%peshkin.net <> | 2005-08-31 01:04:39 +0200 |
---|---|---|
committer | bugreport%peshkin.net <> | 2005-08-31 01:04:39 +0200 |
commit | b93b2208addb1677903ba2901d9c4f22c212086a (patch) | |
tree | 67095308835af1eccd3059fa126aefcb11e0363d | |
parent | 830eca78e2f0e5526ff6d5c9ada3239b9175d4b4 (diff) | |
download | bugzilla-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-x | attachment.cgi | 10 | ||||
-rwxr-xr-x | post_bug.cgi | 3 | ||||
-rwxr-xr-x | process_bug.cgi | 11 | ||||
-rwxr-xr-x | votes.cgi | 1 | ||||
-rwxr-xr-x | whine.pl | 4 |
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", @@ -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) { @@ -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; |