diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2012-10-19 01:21:44 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2012-10-19 01:21:44 +0200 |
commit | fc443eda7c58d236302c9b07017ba6cb059a6120 (patch) | |
tree | b06fb7795aa0c23f7503ac8dc73b0d33e397dd05 /Bugzilla/Field.pm | |
parent | Bug 780053: Oracle crashes when listing keywords, tags or flags in buglists (diff) | |
download | bugzilla-fc443eda7c58d236302c9b07017ba6cb059a6120.tar.gz bugzilla-fc443eda7c58d236302c9b07017ba6cb059a6120.tar.bz2 bugzilla-fc443eda7c58d236302c9b07017ba6cb059a6120.zip |
Bug 531243: Bugzilla crashes on show_bug if it's hit while a custom field is being added
r=justdave a=LpSolit
Diffstat (limited to 'Bugzilla/Field.pm')
-rw-r--r-- | Bugzilla/Field.pm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index 64d5da574..87b307cb7 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -1035,7 +1035,11 @@ sub create { # the parameter isn't sent to create(). $params->{sortkey} = undef if !exists $params->{sortkey}; $params->{type} ||= 0; - + # We mark the custom field as obsolete till it has been fully created, + # to avoid race conditions when viewing bugs at the same time. + my $is_obsolete = $params->{obsolete}; + $params->{obsolete} = 1 if $params->{custom}; + $dbh->bz_start_transaction(); $class->check_required_create_fields(@_); my $field_values = $class->run_create_validators($params); @@ -1064,6 +1068,10 @@ sub create { # Insert a default value of "---" into the legal values table. $dbh->do("INSERT INTO $name (value) VALUES ('---')"); } + + # Restore the original obsolete state of the custom field. + $dbh->do('UPDATE fielddefs SET obsolete = 0 WHERE id = ?', undef, $field->id) + unless $is_obsolete; } return $field; |