Closed Bug 189446 Opened 23 years ago Closed 23 years ago

Cannot change product of a bug

Categories

(Bugzilla :: Creating/Changing Bugs, defect)

x86
Linux
defect
Not set
blocker

Tracking

()

RESOLVED FIXED
Bugzilla 2.18

People

(Reporter: jussi, Assigned: bbaetz)

Details

Attachments

(2 files)

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3b) Gecko/20030116 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3b) Gecko/20030116 When trying to change the product of a bug. Bugzilla gives a short Bug processed message but does not change the product. I could reproduce this in ladfill. Reproducible: Always Steps to Reproduce: 1. Go to http://landfill.bugzilla.org/bugzilla-tip/ 2. Change the product of a bug 3. Commit Actual Results: Landfill gives Bug processed message (Not in the box but just a text message below the banner). the product has not been changed and nothing is inserted to the bug activity log. In my own site I get following diagnostics: Software error: DBD::mysql::st fetchrow_array failed: fetch() without execute() at Bugzilla/DB.pm line 100 Bugzilla::DB::FetchSQLData() called at globals.pl line 497 main::AnyDefaultGroups() called at process_bug.cgi line 297 This could be a regression from bug 163290.
Trace for bbaetz.
Oh, bleh. the code in queries gets the result of MoreSQLData, and then calls FetchSQLData anyway. This is needed to flush the fetchahead buffer. However, if MoreSQLData returns false, then there is no fetchahead buffer, so FetchSQLData calls ->fetch, which fails because the statement is already completed. The old code never tested for errors, so we never noticed. Bleh. I still can't repro this locally, probably because my query does return a result for this case. This idiom is all over because of the silly fetchahead stuff. In this case, we don't need to do this because of the Pop which destroys the fetchahead buffer anyway, but there are other plces we do, and auditing them will be painful. I think just ignoring errors from that line would be the best way to go. We've been doing it for ages, and theres not much we could do in the case of an error such as disk failure anyway, esp without transactions. Thoughts?
Assignee: myk → bbaetz
Severity: major → blocker
Status: UNCONFIRMED → NEW
Ever confirmed: true
Target Milestone: --- → Bugzilla 2.18
When I tested this in landfill, I used bug 632 and tried to change the product to MyOwnBadSelf. bbaetz: Changing the last line of pre-DB.pm version of FetchSQLData to return $::currentquery->fetchrow_array || die "Error: " . $DBI::errstr; Resulted in premature end of script headers in every page I tried. Propably because the cgi's died before producing enough output.
Yeah, same bug.
Attached patch evil hackSplinter Review
Its evil, its ugly, but it works..
Attachment #112273 - Flags: review?(justdave)
Does this record a warning? We should make it do a non-fatal warning so we get them in log files and people start fixing them. (does a die become a warn inside an eval or does it just not output anything?)
see also bug 190197, patch included, which fixes one of these occurances from the caller instead of hiding the error...
Comment on attachment 112273 [details] [diff] [review] evil hack we can worry about warnings later, this makes it all work again at least.
Attachment #112273 - Flags: review?(justdave) → review+
Yeah, but this isn't the only case - edit* does this too, and I am _not_ cleaning that up. Theres no warning, and I'm not sure that we want one, really, since this idiam(sp?) is scattered arround. New code using the DBI directly won't be protected by this.
Flags: approval+
Fixed.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
QA Contact: matty_is_a_geek → default-qa
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: