Commit b93b2208 authored by bugreport%peshkin.net's avatar bugreport%peshkin.net

Bug 305126: Fix table locks after removal of derive_groups

Patch by Joel Peshkin <bugreport@peshkin.net> r=lpsolit, a=myk
parent 830eca78
......@@ -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
......
......@@ -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);
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment