lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <>
Subject [jira] Updated: (LUCENE-2620) Queries with too many asterisks causing 100% CPU usage
Date Tue, 24 Aug 2010 17:11:16 GMT


Robert Muir updated LUCENE-2620:

    Attachment: LUCENE-2620_3x.patch

I took a look at this, and the worst-case behavior in 3x etc is, in my opinion, definitely
bug territory.

when 3x's wildcardEquals() encounters a '*', it does this:
for (int i = string.length(); i >= s; --i)
            if (wildcardEquals(pattern, p, string, i))
              return true;

This is itself already inside a loop in wildcardEquals, so its a disaster.

I added a test for this, and Nick's fix (with one needed length check) and the tests pass.
but if you run the test without the change, you will see what Nick is experiencing.

> Queries with too many asterisks causing 100% CPU usage
> ------------------------------------------------------
>                 Key: LUCENE-2620
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Search
>    Affects Versions: 3.0.1
>         Environment: Debian Lenny with Tomcat 5.5 and Mac OS X 10.6 with Tomcat 6, probably
>            Reporter: Nick Barkas
>            Assignee: Robert Muir
>         Attachments: LUCENE-2620_3x.patch, lucene-asterisks.diff
> If a search query has many adjacent asterisks (e.g. fo**************obar), I can get
my webapp caught in a loop that does not seem to end in a reasonable amount of time and may
in fact be infinite. For just a few asterisks the query eventually does return some results,
but as I add more it takes a longer and longer amount of time. After about six or seven asterisks
the query never seems to finish. Even if I abort the search, the thread handling the troublesome
query continues running in the background and pinning a CPU.
> I found the problem in src/java/org/apache/lucene/search/ on Lucene
3.0.1 and it looks like 3.0.2 ought to be affected as well. I'm not sure about trunk, though.
I have a patch that fixes the problem for me in 3.0.1.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message