Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Request Tracker: Devel

RT 3.6.5 Bug/Patch - Group Creation

 

 

Request Tracker devel RSS feed   Index | Next | Previous | View Threaded


sturner at MIT

Apr 22, 2008, 9:17 AM

Post #1 of 1 (84 views)
Permalink
RT 3.6.5 Bug/Patch - Group Creation

RT 3.6.5, Oracle 9i

I discovered a bug in html/Admin/Groups/Modify.html that causes a
performance problem. In our RT, if we go to Config -> Admin -> Groups
-> New Group, the page takes 3s+ to display, which is slow for a blank form.

I discovered that most of the time was taken by Oracle doing this query:

SELECT *
FROM
Principals WHERE lower(PrincipalType) = :p1 AND (ObjectId IS NULL OR
ObjectId = :p2)

This involves a full scan of the Principals table.

This query appeared to be inside a call to $Group->Disabled() near
the end of the INIT section. This shouldn't be happening on a create,
because there's no $Group object yet.

I moved around the logic that determines the 'enabled' checkbox
setting so that the $Group object is queried only when appropriate.
The 'enabled' checkbox will always be checked for a Create action.

Incidentally, I do wonder why the ObjectId columns on Principals is
nullable - we don;t appear to have any rows with a null value in the
column in our large-ish database.

Steve



> diff -u $RT_HOME/share/html/Admin/Groups/Modify.html Modify2.html
--- /usr/local/rt3/share/html/Admin/Groups/Modify.html Tue Apr 24
13:21:42 2007
+++ Modify2.html Tue Apr 22 12:07:21 2008
@@ -99,6 +99,7 @@
if ($Create) {
$current_tab = 'Admin/Groups/Modify.html?Create=1';
$title = loc("Create a new group");
+ $EnabledChecked ="CHECKED";
}

else {
@@ -138,22 +139,23 @@
ARGSRef => \%ARGS );
push (@results,@fieldresults);
push @results, ProcessObjectCustomFieldUpdates( ARGSRef =>
\%ARGS, Object => $Group );
-}

#we're asking about enabled on the web page but really care about disabled.
-if ($Enabled == 1) {
- $Disabled = 0;
-}
-else {
- $Disabled = 1;
-}
-if ( ($SetEnabled) and ( $Disabled != $Group->Disabled) ) {
- my ($code, $msg) = $Group->SetDisabled($Disabled);
- push @results, loc('Enabled status [_1]', loc_fuzzy($msg));
-}
+ if ($Enabled == 1) {
+ $Disabled = 0;
+ }
+ else {
+ $Disabled = 1;
+ }
+ if ( ($SetEnabled) and ( $Disabled != $Group->Disabled) ) {
+ my ($code, $msg) = $Group->SetDisabled($Disabled);
+ push @results, loc('Enabled status [_1]', loc_fuzzy($msg));
+ }
+
+ unless ($Group->Disabled()) {
+ $EnabledChecked ="CHECKED";
+ }

-unless ($Group->Disabled()) {
- $EnabledChecked ="CHECKED";
}




Stephen Turner
Senior Programmer/Analyst - SAIS
MIT Information Services and Technology (IS&T)


_______________________________________________
List info: http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel

Request Tracker devel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.