Bug 374016: Use transactions to create bugs
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit git-svn-id: svn://10.0.0.236/trunk@222298 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -264,6 +264,8 @@ sub create {
|
||||
my $class = shift;
|
||||
my $dbh = Bugzilla->dbh;
|
||||
|
||||
$dbh->bz_start_transaction();
|
||||
|
||||
$class->check_required_create_fields(@_);
|
||||
my $params = $class->run_create_validators(@_);
|
||||
|
||||
@@ -291,10 +293,6 @@ sub create {
|
||||
my $timestamp = $params->{creation_ts};
|
||||
delete $params->{creation_ts};
|
||||
|
||||
$dbh->bz_lock_tables('bugs WRITE', 'bug_group_map WRITE',
|
||||
'longdescs WRITE', 'cc WRITE', 'keywords WRITE', 'dependencies WRITE',
|
||||
'bugs_activity WRITE', 'fielddefs READ');
|
||||
|
||||
my $bug = $class->insert_create_data($params);
|
||||
|
||||
# Add the group restrictions
|
||||
@@ -342,6 +340,12 @@ sub create {
|
||||
$sth_bug_time->execute($timestamp, $blocked_id);
|
||||
}
|
||||
|
||||
$dbh->bz_commit_transaction();
|
||||
|
||||
# Because MySQL doesn't support transactions on the longdescs table,
|
||||
# we do this after we've committed the transaction. That way we're
|
||||
# fairly sure we're inserting a good Bug ID.
|
||||
|
||||
# And insert the comment. We always insert a comment on bug creation,
|
||||
# but sometimes it's blank.
|
||||
my @columns = qw(bug_id who bug_when thetext);
|
||||
@@ -357,7 +361,6 @@ sub create {
|
||||
$dbh->do('INSERT INTO longdescs (' . join(',', @columns) . ")
|
||||
VALUES ($qmarks)", undef, @values);
|
||||
|
||||
$dbh->bz_unlock_tables();
|
||||
|
||||
return $bug;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user