[ 
https://issues.apache.org/jira/browse/GEODE-2943?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shelley Lynn Hughes-Godfrey updated GEODE-2943:
-----------------------------------------------
    Description: 
Some invalid query strings might be "*" or " ".

When used with a single node dataStore, we see the correct Exception returned:
{noformat}
gfsh>search lucene --name=testIndex --region=/testRegion --queryStrings="*" 
--defaultField=__REGION_VALUE_FIELD
Could not process command due to GemFire error. An error occurred while 
searching lucene index across the Geode cluster: Leading wildcard is not 
allowed: __REGION_VALUE_FIELD:*
{noformat}

However, with multiple nodes, the query hangs. 

Jason debugged this a bit and found:
{noformat}
the remote nodes fail in the function with this stack trace (where we will 
probably need to try/catch any lucene exception)
[warning 2017/05/18 13:50:34.105 PDT server2 <Function Execution Processor1> 
tid=0x3c]
org.apache.geode.cache.lucene.LuceneQueryException: Malformed lucene query: 
*asdf*
        at 
org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:79)
        at 
org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.getQuery(LuceneQueryFunction.java:160)
        at 
org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.execute(LuceneQueryFunction.java:87)
        at 
org.apache.geode.internal.cache.PartitionedRegionDataStore.executeOnDataStore(PartitionedRegionDataStore.java:2956)
        at 
org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.operateOnPartitionedRegion(PartitionedRegionFunctionStreamingMessage.java:98)
        at 
org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:339)
        at 
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376)
        at 
org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:442)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at 
org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:625)
        at 
org.apache.geode.distributed.internal.DistributionManager$9$1.run(DistributionManager.java:1071)
        at java.lang.Thread.run(Thread.java:745)
Caused by: LEADING_WILDCARD_NOT_ALLOWED: Leading wildcard is not allowed: 
field1:*asdf*
        at 
org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.postProcessNode(AllowLeadingWildcardProcessor.java:79)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.processIteration(QueryNodeProcessorImpl.java:98)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.process(QueryNodeProcessorImpl.java:89)
        at 
org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.process(AllowLeadingWildcardProcessor.java:54)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorPipeline.process(QueryNodeProcessorPipeline.java:89)
        at 
org.apache.lucene.queryparser.flexible.core.QueryParserHelper.parse(QueryParserHelper.java:250)
        at 
org.apache.lucene.queryparser.flexible.standard.StandardQueryParser.parse(StandardQueryParser.java:159)
        at 
org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:73)
        ... 12 more
{noformat}

  was:
Some invalid query strings might be "`*`" or " ".

When used with a single node dataStore, we see the correct Exception returned:
```
gfsh>search lucene --name=testIndex --region=/testRegion --queryStrings="*" 
--defaultField=__REGION_VALUE_FIELD
Could not process command due to GemFire error. An error occurred while 
searching lucene index across the Geode cluster: Leading wildcard is not 
allowed: __REGION_VALUE_FIELD:*
```
However, with multiple nodes, the query hangs. 

Jason debugged this a bit and found:
```
the remote nodes fail in the function with this stack trace (where we will 
probably need to try/catch any lucene exception)
[warning 2017/05/18 13:50:34.105 PDT server2 <Function Execution Processor1> 
tid=0x3c]
org.apache.geode.cache.lucene.LuceneQueryException: Malformed lucene query: 
*asdf*
        at 
org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:79)
        at 
org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.getQuery(LuceneQueryFunction.java:160)
        at 
org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.execute(LuceneQueryFunction.java:87)
        at 
org.apache.geode.internal.cache.PartitionedRegionDataStore.executeOnDataStore(PartitionedRegionDataStore.java:2956)
        at 
org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.operateOnPartitionedRegion(PartitionedRegionFunctionStreamingMessage.java:98)
        at 
org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:339)
        at 
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376)
        at 
org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:442)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at 
org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:625)
        at 
org.apache.geode.distributed.internal.DistributionManager$9$1.run(DistributionManager.java:1071)
        at java.lang.Thread.run(Thread.java:745)
Caused by: LEADING_WILDCARD_NOT_ALLOWED: Leading wildcard is not allowed: 
field1:*asdf*
        at 
org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.postProcessNode(AllowLeadingWildcardProcessor.java:79)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.processIteration(QueryNodeProcessorImpl.java:98)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.process(QueryNodeProcessorImpl.java:89)
        at 
org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.process(AllowLeadingWildcardProcessor.java:54)
        at 
org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorPipeline.process(QueryNodeProcessorPipeline.java:89)
        at 
org.apache.lucene.queryparser.flexible.core.QueryParserHelper.parse(QueryParserHelper.java:250)
        at 
org.apache.lucene.queryparser.flexible.standard.StandardQueryParser.parse(StandardQueryParser.java:159)
        at 
org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:73)
        ... 12 more
```


> Invalid queryStrings cause lucene searches to hang in in PR with multiple 
> nodes
> -------------------------------------------------------------------------------
>
>                 Key: GEODE-2943
>                 URL: https://issues.apache.org/jira/browse/GEODE-2943
>             Project: Geode
>          Issue Type: Bug
>          Components: lucene
>    Affects Versions: 1.2.0
>            Reporter: Shelley Lynn Hughes-Godfrey
>
> Some invalid query strings might be "*" or " ".
> When used with a single node dataStore, we see the correct Exception returned:
> {noformat}
> gfsh>search lucene --name=testIndex --region=/testRegion --queryStrings="*" 
> --defaultField=__REGION_VALUE_FIELD
> Could not process command due to GemFire error. An error occurred while 
> searching lucene index across the Geode cluster: Leading wildcard is not 
> allowed: __REGION_VALUE_FIELD:*
> {noformat}
> However, with multiple nodes, the query hangs. 
> Jason debugged this a bit and found:
> {noformat}
> the remote nodes fail in the function with this stack trace (where we will 
> probably need to try/catch any lucene exception)
> [warning 2017/05/18 13:50:34.105 PDT server2 <Function Execution Processor1> 
> tid=0x3c]
> org.apache.geode.cache.lucene.LuceneQueryException: Malformed lucene query: 
> *asdf*
>         at 
> org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:79)
>         at 
> org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.getQuery(LuceneQueryFunction.java:160)
>         at 
> org.apache.geode.cache.lucene.internal.distributed.LuceneQueryFunction.execute(LuceneQueryFunction.java:87)
>         at 
> org.apache.geode.internal.cache.PartitionedRegionDataStore.executeOnDataStore(PartitionedRegionDataStore.java:2956)
>         at 
> org.apache.geode.internal.cache.partitioned.PartitionedRegionFunctionStreamingMessage.operateOnPartitionedRegion(PartitionedRegionFunctionStreamingMessage.java:98)
>         at 
> org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:339)
>         at 
> org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376)
>         at 
> org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:442)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at 
> org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:625)
>         at 
> org.apache.geode.distributed.internal.DistributionManager$9$1.run(DistributionManager.java:1071)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: LEADING_WILDCARD_NOT_ALLOWED: Leading wildcard is not allowed: 
> field1:*asdf*
>         at 
> org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.postProcessNode(AllowLeadingWildcardProcessor.java:79)
>         at 
> org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.processIteration(QueryNodeProcessorImpl.java:98)
>         at 
> org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl.process(QueryNodeProcessorImpl.java:89)
>         at 
> org.apache.lucene.queryparser.flexible.standard.processors.AllowLeadingWildcardProcessor.process(AllowLeadingWildcardProcessor.java:54)
>         at 
> org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorPipeline.process(QueryNodeProcessorPipeline.java:89)
>         at 
> org.apache.lucene.queryparser.flexible.core.QueryParserHelper.parse(QueryParserHelper.java:250)
>         at 
> org.apache.lucene.queryparser.flexible.standard.StandardQueryParser.parse(StandardQueryParser.java:159)
>         at 
> org.apache.geode.cache.lucene.internal.StringQueryProvider.getQuery(StringQueryProvider.java:73)
>         ... 12 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to