well it's an interesting solution but my use case is such that any of the
daily servers could hold the data for a query and hence i need an
aggregator to sum up the results. The only issue is, an aggregator could
sum up only certain number (I heard around 200) of cores. Hence I would
need to manually sum results from different aggregators if for some reason
my query spans more than 200 cores. Digging more into the issue I found
that solr does distributed searching in two steps. First it queries for doc
ids and then gets the data corresponding to those doc ids. I am seeing the
error when it is trying to compare the score of two documents. Below is a
better stack trace and its similar to
https://issues.apache.org/jira/browse/SOLR-2147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
.

SEVERE: java.lang.NullPointerException
  at
org.apache.solr.handler.component.ShardFieldSortedHitQueue$1.compare(ShardDoc.java:236)
  at
org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardDoc.java:160)
at
org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardDoc.java:101)
  at org.apache.lucene.util.PriorityQueue.upHeap(PriorityQueue.java:223)
at org.apache.lucene.util.PriorityQueue.add(PriorityQueue.java:132)
at
org.apache.lucene.util.PriorityQueue.insertWithOverflow(PriorityQueue.java:148)
  at
org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:786)
  at
org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:587)
at
org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:566)
at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:283)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
  at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
  at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
  at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)


On Thu, Jul 12, 2012 at 2:46 PM, Michael Della Bitta <
michael.della.bi...@appinions.com> wrote:

> I'm pretty sure a sharded query/response gets tagged in a special way
> that might be incompatible with multiple tiers like this.
>
> Had you considered a single tier that consisted of a load-balanced
> pool of 'aggregator' servers?
>
> Michael Della Bitta
>
> ------------------------------------------------
> Appinions, Inc. -- Where Influence Isn’t a Game.
> http://www.appinions.com
>
>
> On Thu, Jul 12, 2012 at 5:36 PM, Peter Markey <sudoma...@gmail.com> wrote:
> > Hello,
> >
> > I am trying to do a distributed search with solr and for some reason I
> get
> > an internal server error. The set up is like this: I have 4 solr servers
> > that index data (say daily each with 10 cores) and I use another bunch of
> > solr instances (lets call one of them as L1aggregator) that does a
> > distributed request to all the 40 cores of 4 solr servers. I also have
> > another solr instance (lets call it L2aggregator) that would be
> collecting
> > data from multiple L1aggregator solr instances. Its like a multi-level
> > structure. I am just trying out an architecture which has daily solr
> > servers at the lowest level followed by aggregators at each level. Hence,
> > an aggregator node does not have data of its own. The problem is while
> the
> > L1aggregator seem to work perfectly fine, the L2Aggregator seem to throw
> > internal server error (stack trace posted below). I specify the address
> of
> > shards in the aggregator's config file. Also, all the documents have a
> > unique ids. While I was trying to debug the error, I noticed that a L2
> > aggregator solr makes two calls to L1 aggregator: one to get the docs'
> ids
> > and the other to get data for thos doc ids. While the first call works,
> the
> > second call seems to throw the error pasted below. Any help would be
> highly
> > appreciated. Thanks
> >
> >
> >
> >
> >
> > HTTP Status 500 - Internal Server Error Internal Server Error request:
> >
> http://l1aggregator:8080/solr/core-00/selectorg.apache.solr.common.SolrException
> :
> > Internal Server Error Internal Server
> > Error request: http://l1aggregator:8080/solr/core-00/select at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:427)
> > at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:129)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:103)
> > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at
> > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> > at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> > at java.lang.Thread.run(Thread.java:662)
> > ------------------------------
> >
> > *type* Status report
> >
> > *message* *Internal Server Error Internal Server Error request:
> >
> http://l1aggregator:8080/solr/core-00/selectorg.apache.solr.common.SolrException
> :
> > Internal Server Error Internal Server
> > Error request: http://**l1aggregator**:8080/solr/core-00/select at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:427)
> > at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:129)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:103)
> > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at
> > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> > at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> > at java.lang.Thread.run(Thread.java:662)*
> >
> > *description* *The server encountered an internal error (Internal Server
> > Error Internal Server Error request:
> > http://**l1aggregator**:8080/solr/core-00/select
> > org.apache.solr.common.SolrException: Internal Server Error Internal
> Server
> > Error request: http://**l1aggregator**:8080/solr/core-00/select at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:427)
> > at
> >
> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:129)
> > at
> >
> org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:103)
> > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at
> > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> > java.util.concurrent.FutureTask.run(FutureTask.java:138) at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> > at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> > at java.lang.Thread.run(Thread.java:662) ) that prevented it from
> > fulfilling this request.*
> > *
> > *
>

Reply via email to