[rt-users] Problematic Search/Display Query

Curtis Bruneau curtisb at vianet.ca
Fri Jul 18 12:13:03 EDT 2008


Just an update, I have reinstalled the machine in attempt to solve this 
problem, I am using etch packaged apache2+mod_perl2 and mysql5 and the 
problem still occurs,  here is a trimmed sql output from a 
Ticket/Display.html?id=x, attached is the full log for that one page view.

233 Query       SELECT  * FROM Tickets WHERE id = '3' <- The query which 
gets the ticket details.
233 Query       SELECT main.* FROM Tickets main  WHERE (main.Status != 
'deleted') AND ( ( main.Subject LIKE '%e%' ) ) AND (main.Effecti
veId = main.id) AND (main.Type = 'ticket')  ORDER BY main.id ASC <- the 
problem query derived from search criteria with no limit.

Anyone know what it's used for? It's a dangerous query with potentially 
large results. *Can anyone confirm if this happens to them?*

I tried to use as many packages as possible that reasonably met the 
version requirements, the others were done from source. make testdeps 
comes back fine, I attempted to upgrade to the latest versions for 
modules that could be related to the db/query. The module versions are 
also attached.

Thanks

Curtis Bruneau wrote:
> Greetings everyone,
>
> We're having an issue with several versions of RT that are all fully 
> functional aside from one aspect of operation.   The brief description 
> of the problem is that when you go to /Ticket/Display.html?id=<id> 
> from a search page (/Search/Build.html or /Search/Simple.html  ) what 
> appears to be happening is the search is saved in the session (normal) 
> but it's getting queried on Display along with the other queries.  
> This  appears to be an extra query of no use with a limitless result 
> set. This is problematic because however many records your search 
> returns the display will try to load all the records into the web 
> server potentially causing the process to run out of memory.
>
> Packaged OS Details:
> -Debian Etch - kernel 2.6.18-6-amd64 x86_64 GNU/Linux
> -apache2 2.2.3-4+etch4
> -libapache2-mod-perl2 2.0.2-2.4
> -mysql-server-5.0 5.0.51a-3~bpo40+1)
> -perl v5.8.8
>
> From source:
> -libdbix-searchbuilder-perl_1.53-1
> -libmodule-versions-report-perl_1.03-2
> -libtext-quoted-perl-2.05-2
>
> RT Versions Tested and Affected: 3.6.6, 3.7.85, 3.7.86, 3.8.0rc1
> 'make testdeps' in each RT version: PASSED
>
> Steps to reproduce this problem:
>
> 1) Start with a clean installation and clean database.
> 2) Create a few tickets in the default "General" queue as root.
> 3) Enable mysql query logging
>
> log             = /var/log/mysql/mysql.log
>
> Note: Without query logging on the database server you may not notice 
> it unless your search returned thousands of records causing major 
> slowness.
>
> 4)  Next, load the search page in your browser by adding the search 
> criteria and then selecting "Update format and Search" ( 
> Search/Build.html with a listing of the result set of your search). 
> For this example I created 2 test tickets with similar subjects and 
> made my search the subject for the text 'e' which will match both of 
> my tickets. There idea here is to get a common result with multiple 
> records to observe the general query on the db side.
>
> 5) Select one of the result tickets (/Ticket/Display.html?id=...)
>
> 6) **BUG LOADED HERE** -- the search clause, which appears to be 
> stored in the session are used on the following query. The actual 
> query used to display the data is separate and is limited by the 
> Ticket ID.
>
> Watch the query log for:
>
> Query       SELECT main.* FROM Tickets main  WHERE (main.Status != 
> 'deleted') AND (main.Subject LIKE '%e%') AND (main.EffectiveId = 
> main.id) AND (main.Type = 'ticket')  ORDER BY main.id ASC
>
> As you can see the query will return as many records as it matches, 
> potentially thousands or more. The same issue occurs regardless of the 
> search criteria and will always have no limit - it's basically the 
> same query as select count(*) when building the search results paging 
> list, the displayed results also have the same but with a 
> limit/offset. I can not seem to figure out why this is happening, the 
> only reason I can think of as to why this query is needed is possibly 
> some sort of count but the count is missing.
>
> This problem does not occur when you go to the link directly with no 
> referring URL or a non search page, it only seems to happen when a 
> search is saved in the session. Could someone please test this to see 
> if this has been overlooked as most installations wouldn't show any 
> symptom of the problem until there were a large enough result set to 
> cause system memory exhaustion. If you aren't observing this problem I 
> wouldn't mind knowing as well.
>
> Thank you in advance,
>
>
>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: display_mysql.log
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20080718/8c7931c4/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mod_versions.txt
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20080718/8c7931c4/attachment.txt>


More information about the rt-users mailing list