
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
|