Closed
Bug 413772
Opened 17 years ago
Closed 17 years ago
Eliminate sqlify_criteria in Bugzilla::Flag and replace match() there with Bugzilla::Object::match
Categories
(Bugzilla :: Attachments & Requests, enhancement, P3)
Tracking
()
RESOLVED
FIXED
Bugzilla 3.2
People
(Reporter: mkanat, Assigned: mkanat)
References
Details
Attachments
(1 file, 1 obsolete file)
|
11.82 KB,
patch
|
LpSolit
:
review+
|
Details | Diff | Splinter Review |
Right now bmo has this query about 34 times per second:
SELECT id FROM flags WHERE 1 = 1 AND attach_id IS NULL AND type_id = ? AND bug_id = ?
The first step to fixing that is to remove Bugzilla::Flag::match and replace it with the standard Bugzilla::Object::match, and remove sqlify_criteria in the process.
| Assignee | ||
Comment 1•17 years ago
|
||
Okay, here we go. This was pretty straightforward. Combined with the changes I made to match() in bug 372795, this should be a nice DB performance win, or at least allow us to better diagnose where problems are coming from. Also, it helps clean up the architecture!
Assignee: attach-and-request → mkanat
Status: NEW → ASSIGNED
Attachment #298837 -
Flags: review?(LpSolit)
| Assignee | ||
Updated•17 years ago
|
Priority: -- → P3
Target Milestone: --- → Bugzilla 3.2
Comment 2•17 years ago
|
||
Comment on attachment 298837 [details] [diff] [review]
v1
>Index: Bugzilla/Flag.pm
>+ return $class->SUPER::match(@_);
This doesn't work. Changing a bug flag throws:
Can't call method "SUPER::match" on unblessed reference at Bugzilla/Flag.pm line 219.
>@@ -1128,51 +1126,6 @@
> # Private Functions
> ######################################################################
Please remove this now useless title.
Attachment #298837 -
Flags: review?(LpSolit) → review-
Comment 3•17 years ago
|
||
I'm pretty sure the reason of the failure is that Bugzilla::Flag::snapshot() calls match() directly. So you need to write something like:
my $invocant = shift;
my $class = ref($invocant) || $invocant;
in match(). Maybe in count() too, btw, to be safe.
| Assignee | ||
Comment 4•17 years ago
|
||
Okay, there was a limit to how far I was willing to go in converting "::" methods to "->" methods, so for some things here I just used __PACKAGE__ (which makes it hard to subclass Bugzilla::Flag, but you really couldn't do that before anyway).
Attachment #298837 -
Attachment is obsolete: true
Attachment #299878 -
Flags: review?(LpSolit)
Comment 5•17 years ago
|
||
Comment on attachment 299878 [details] [diff] [review]
v2
>+ my $has_flags = __PACKAGE__->count(
No, that's not how I want to see it implemented, especially for process() and snapshot(). All you have to do is to replace direct calls to count() in Flag.pm by Bugzilla::Flag->count() AFAIK.
Attachment #299878 -
Flags: review?(LpSolit) → review-
| Assignee | ||
Comment 6•17 years ago
|
||
(In reply to comment #5)
> No, that's not how I want to see it implemented, especially for process() and
> snapshot(). All you have to do is to replace direct calls to count() in Flag.pm
> by Bugzilla::Flag->count() AFAIK.
That's what I *did*. That's what __PACKAGE__->count means. It just doesn't have to be updated if the name of the package changes for some reason--it's the standard Perl way of doing this.
| Assignee | ||
Updated•17 years ago
|
Attachment #299878 -
Flags: review- → review?(LpSolit)
Comment 7•17 years ago
|
||
Comment on attachment 299878 [details] [diff] [review]
v2
Looks good. r=LpSolit
I'm going to commit it myself as I have another patch conflicting with it.
Attachment #299878 -
Flags: review?(LpSolit) → review+
Updated•17 years ago
|
Flags: approval+
Comment 8•17 years ago
|
||
Checking in attachment.cgi;
/cvsroot/mozilla/webtools/bugzilla/attachment.cgi,v <-- attachment.cgi
new revision: 1.141; previous revision: 1.140
done
Checking in editusers.cgi;
/cvsroot/mozilla/webtools/bugzilla/editusers.cgi,v <-- editusers.cgi
new revision: 1.146; previous revision: 1.145
done
Checking in post_bug.cgi;
/cvsroot/mozilla/webtools/bugzilla/post_bug.cgi,v <-- post_bug.cgi
new revision: 1.193; previous revision: 1.192
done
Checking in process_bug.cgi;
/cvsroot/mozilla/webtools/bugzilla/process_bug.cgi,v <-- process_bug.cgi
new revision: 1.402; previous revision: 1.401
done
Checking in Bugzilla/Attachment.pm;
/cvsroot/mozilla/webtools/bugzilla/Bugzilla/Attachment.pm,v <-- Attachment.pm
new revision: 1.55; previous revision: 1.54
done
Checking in Bugzilla/Bug.pm;
/cvsroot/mozilla/webtools/bugzilla/Bugzilla/Bug.pm,v <-- Bug.pm
new revision: 1.231; previous revision: 1.230
done
Checking in Bugzilla/Flag.pm;
/cvsroot/mozilla/webtools/bugzilla/Bugzilla/Flag.pm,v <-- Flag.pm
new revision: 1.90; previous revision: 1.89
done
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•