You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Peter Sturge <pe...@gmail.com> on 2011/03/07 21:53:49 UTC

ClassCastException thrown in Join and Pivot

Hi,

I (and apparently others) have noticed a rather strange and seemingly
intermittent ClassCastException in facet caching when using join (SOLR-2272)
and sometimes pivot as well.

A similar discussion from others noticing this can be found here:
http://www.lucidimagination.com/search/document/30c0029a7eb194c4/are_there_any_restrictions_on_what_kind_of_how_many_fields_you_can_use_in_pivot_query_i_get_classca#7ef18fd2add7ee5c

Errors/stack trace for the exception included below.

Solr Version: This is seen intermittently on trunk + SOLR-2272.

>From initial testing, maybe this is an escaping/tokenizing issue? If I have
facet values that include a '-' in the string, the exception is thrown.
Strangely, it seems to show up in other scenarios, but maybe under the
covers there are non-alphanum and/or special chars ending up in facet
parameters.

I'm not very familiar with the join and/or pivot code (but wow they are
great additions!) -- perhaps someone with more knowledge in this area can
chime in?

Many thanks,
Peter


Here's a sample query that generates an error:
     http://127.0.0.1:9000/solr/select?q=*:*&fq={!join from=customer_number
to=customer_number}customer_name:onlineltd

N.B. Both the customer_number and customer_name fields have some [but not
all] values that contain '-', whitespace, and other non-alphanum chars. The
last 'onlineltd' can be any value to produce the exception.
Also, the server log shows this exception is thrown twice in quick
succession.

Error messages:

Excerpt just before stack trace from the server log:
07-Mar-2011 20:40:08 org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select
params={fq={!join+from%3Dcustomer_number+to%3
Dcustomer_number}customer_name:*ltd*&q=*:*&rows=0} status=500 QTime=34
07-Mar-2011 20:40:08 org.apache.solr.common.SolrException log
SEVERE: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
[Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;


And here's the client side http trace:
HTTP ERROR 500

Problem accessing /solr/select. Reason:

    [Ljava.lang.Object; cannot be cast to
[Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
[Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;
	at org.apache.solr.common.util.ConcurrentLRUCache$PQueue.myInsertWithOverflow(ConcurrentLRUCache.java:377)
	at org.apache.solr.common.util.ConcurrentLRUCache.markAndSweep(ConcurrentLRUCache.java:329)
	at org.apache.solr.common.util.ConcurrentLRUCache.put(ConcurrentLRUCache.java:144)
	at org.apache.solr.search.FastLRUCache.put(FastLRUCache.java:131)
	at org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:809)
	at org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSet(JoinQParserPlugin.java:256)
	at org.apache.solr.search.JoinQuery$JoinQueryWeight.scorer(JoinQParserPlugin.java:139)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:536)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:303)
	at org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:849)
	at org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:568)
	at org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:603)
	at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1088)
	at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1069)
	at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:337)
	at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:431)
	at org.apache.solr.handler.component.SearchHandler.handleSingleQuery(SearchHandler.java:304)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:261)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1298)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:341)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:326)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Re: ClassCastException thrown in Join and Pivot

Posted by Yonik Seeley <yo...@lucidimagination.com>.
Hmmm, this is definitely strange.
Doesn't seem like it has anything to do with the join patch, or the
field values.
For some strange reason, an internal priority queue (inheriting from
lucene's priority queue) in the ConcurrentLRUCache can't cast one of
it's internal arrays to the correct type.  It can't cast Object[] to
CacheEntry[]

This smells like some sort of weird classloading issue.  Are you sure
you don't have any old jars or class directories sitting around in the
classpath somewhere?

-Yonik
http://lucidimagination.com


On Mon, Mar 7, 2011 at 3:53 PM, Peter Sturge <pe...@gmail.com> wrote:
> Hi,
>
> I (and apparently others) have noticed a rather strange and seemingly
> intermittent ClassCastException in facet caching when using join (SOLR-2272)
> and sometimes pivot as well.
>
> A similar discussion from others noticing this can be found here:
> http://www.lucidimagination.com/search/document/30c0029a7eb194c4/are_there_any_restrictions_on_what_kind_of_how_many_fields_you_can_use_in_pivot_query_i_get_classca#7ef18fd2add7ee5c
>
> Errors/stack trace for the exception included below.
>
> Solr Version: This is seen intermittently on trunk + SOLR-2272.
>
> From initial testing, maybe this is an escaping/tokenizing issue? If I have
> facet values that include a '-' in the string, the exception is thrown.
> Strangely, it seems to show up in other scenarios, but maybe under the
> covers there are non-alphanum and/or special chars ending up in facet
> parameters.
>
> I'm not very familiar with the join and/or pivot code (but wow they are
> great additions!) -- perhaps someone with more knowledge in this area can
> chime in?
>
> Many thanks,
> Peter
>
>
> Here's a sample query that generates an error:
>      http://127.0.0.1:9000/solr/select?q=*:*&fq={!join from=customer_number
> to=customer_number}customer_name:onlineltd
>
> N.B. Both the customer_number and customer_name fields have some [but not
> all] values that contain '-', whitespace, and other non-alphanum chars. The
> last 'onlineltd' can be any value to produce the exception.
> Also, the server log shows this exception is thrown twice in quick
> succession.
>
> Error messages:
>
> Excerpt just before stack trace from the server log:
> 07-Mar-2011 20:40:08 org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select
> params={fq={!join+from%3Dcustomer_number+to%3
> Dcustomer_number}customer_name:*ltd*&q=*:*&rows=0} status=500 QTime=34
> 07-Mar-2011 20:40:08 org.apache.solr.common.SolrException log
> SEVERE: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
> [Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;
>
>
> And here's the client side http trace:
>
> HTTP ERROR 500
>
> Problem accessing /solr/select. Reason:
>
>     [Ljava.lang.Object; cannot be cast to
> [Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;
>
> java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
> [Lorg.apache.solr.common.util.ConcurrentLRUCache$CacheEntry;
>
> 	at
> org.apache.solr.common.util.ConcurrentLRUCache$PQueue.myInsertWithOverflow(ConcurrentLRUCache.java:377)
> 	at
> org.apache.solr.common.util.ConcurrentLRUCache.markAndSweep(ConcurrentLRUCache.java:329)
> 	at
> org.apache.solr.common.util.ConcurrentLRUCache.put(ConcurrentLRUCache.java:144)
>
> 	at org.apache.solr.search.FastLRUCache.put(FastLRUCache.java:131)
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:809)
> 	at
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSet(JoinQParserPlugin.java:256)
>
> 	at
> org.apache.solr.search.JoinQuery$JoinQueryWeight.scorer(JoinQParserPlugin.java:139)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:536)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:303)
>
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:849)
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:568)
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:603)
>
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1088)
> 	at
> org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1069)
> 	at
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:337)
>
> 	at
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:431)
> 	at
> org.apache.solr.handler.component.SearchHandler.handleSingleQuery(SearchHandler.java:304)
> 	at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:261)
>
> 	at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1298)
> 	at
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:341)
>
> 	at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
> 	at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
>
> 	at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
> 	at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> 	at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> 	at org.mortbay.jetty.Server.handle(Server.java:326)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> 	at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
>
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> 	at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>
> 	at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org