diff options
author | mkanat%bugzilla.org <> | 2007-03-24 06:11:38 +0100 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2007-03-24 06:11:38 +0100 |
commit | 1463ef1599f942025ba67aeae96d5c3b6301db7a (patch) | |
tree | b1559b8b73e325cbb6a705e39721618b82f5abf2 /Bugzilla | |
parent | fce3b9626675493b2afb9ce09ab7e59aaea82317 (diff) | |
download | bugzilla-1463ef1599f942025ba67aeae96d5c3b6301db7a.tar.gz bugzilla-1463ef1599f942025ba67aeae96d5c3b6301db7a.tar.xz |
Bug 374016: Use transactions to create bugs
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
Diffstat (limited to 'Bugzilla')
-rwxr-xr-x | Bugzilla/Bug.pm | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 78c939b98..daebaf701 100755 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -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; } |