We're using:
Solr Specification Version: 1.3.0.2009.01.23.10.46.02
Solr Implementation Version: 1.4-dev 737141M - root - 2009-01-23
10:46:02
Lucene Specification Version: 2.9-dev
Lucene Implementation Version: 2.9-dev 724059 - 2008-12-06 20:08:54
We'll see about getting up to trunk and firing off our load test and
seeing if we can get it to happen with that.
Thanks for your time!
Matthew Runo
Software Engineer, Zappos.com
mr...@zappos.com - 702-943-7833
On Feb 27, 2009, at 7:44 AM, Yonik Seeley wrote:
I'm using trunk, but I set a breakpoint on SegmentReader.isDeleted()
on an index with deletions, and I couldn't get it to be called.
numDocs : 26
maxDoc : 130
reader:SolrIndexReader
{this=1935e6f,r=readonlymultisegmentrea...@1935e6f,segments=5}
-Yonik
http://www.lucidimagination.com
On Thu, Feb 26, 2009 at 4:55 PM, Matthew Runo <mr...@zappos.com>
wrote:
I see a ReadOnlySegmentReader now - we're on an optimized index now
which
gets around the isDeleted() check.
(solr4, optimized)
searcherName : searc...@260f8e27 main
caching : true
numDocs : 139583
maxDoc : 139583
readerImpl : ReadOnlySegmentReader
readerDir :
org.apache.lucene.store.NIOFSDirectory@/opt/solr-data/zeta-main/index
indexVersion : 1233423823917
openedAt : Thu Feb 26 13:29:25 PST 2009
registeredAt : Thu Feb 26 13:29:42 PST 2009
warmupTime : 16910
(solr1, non optimized)
searcherName : searc...@36be11a1 main
caching : true
numDocs : 139561
maxDoc : 139591
readerImpl : ReadOnlyMultiSegmentReader
readerDir :
org.apache.lucene.store.NIOFSDirectory@/opt/solr-data/zeta-main/index
indexVersion : 1233423823924
openedAt : Thu Feb 26 13:48:16 PST 2009
registeredAt : Thu Feb 26 13:49:11 PST 2009
warmupTime : 54785
I did a thread dump against the optimized server just now, but
didn't find
anything blocked to check which reader was actually in use this time.
Thanks for your time!
Matthew Runo
Software Engineer, Zappos.com
mr...@zappos.com - 702-943-7833
On Feb 26, 2009, at 1:39 PM, Yonik Seeley wrote:
That's interesting.
We should be using read-only readers, which should not synchronize
on
the deleted docs check. But as your stack trace shows, you're using
SegmentReader and MultiSegmentReader.
Right now, if I look at the admin/statistics page at the searcher,
it
shows the following for the reader:
reader:SolrIndexReader
{this=42f352,r=readonlymultisegmentrea...@42f352,segments=6}
Hopefully the fact that it's a ReadOnlyMultiSegmentReader means that
it contains ReadOnlySegmentReader instances, which don't synchronize
on isDeleted.
What do you see?
-Yonik
On Thu, Feb 26, 2009 at 4:09 PM, Matthew Runo <mr...@zappos.com>
wrote:
Hello folks!
I was under the impression that this sync bottleneck was fixed in
recent
versions of Solr/Lucene, but we're seeing it with 1.4-dev right
now. When
we
load test a server with >100 threads (using jmeter), we see several
threads
all blocked at the same spot:
"http-8080-exec-505" - Thread t...@594
java.lang.Thread.State: BLOCKED on
org.apache.lucene.index.segmentrea...@2b6f5d18 owned by:
http-8080-exec-434
at
org
.apache.lucene.index.SegmentReader.isDeleted(SegmentReader.java:
737)
at
org
.apache
.lucene
.index.MultiSegmentReader.isDeleted(MultiSegmentReader.java:266)
at
org.apache.solr.search.function.FunctionQuery
$AllScorer.next(FunctionQuery.java:118)
at
org.apache.solr.search.function.FunctionQuery
$AllScorer.skipTo(FunctionQuery.java:137)
at
org
.apache
.lucene
.search
.BooleanScorer2$SingleMatchScorer.skipTo(BooleanScorer2.java:170)
at
org
.apache.lucene.search.ReqOptSumScorer.score(ReqOptSumScorer.java:
76)
at
org.apache.lucene.search.BooleanScorer2.score(BooleanScorer2.java:
357)
at
org.apache.lucene.search.BooleanScorer2.score(BooleanScorer2.java:
320)
at
org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:
136)
at org.apache.lucene.search.Searcher.search(Searcher.java:
126)
at org.apache.lucene.search.Searcher.search(Searcher.java:
105)
at
org
.apache
.solr
.search
.SolrIndexSearcher.getDocListAndSetNC(SolrIndexSearcher.java:1231)
at
org
.apache
.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:
917)
at
org
.apache
.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:338)
at
org
.apache
.solr
.handler.component.QueryComponent.process(QueryComponent.java:164)
at
org
.apache
.solr
.handler
.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
at
org
.apache
.solr
.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:
131)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1333)
at
org
.apache
.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:
303)
at
org
.apache
.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:
232)
at
org
.apache
.catalina
.core
.ApplicationFilterChain
.internalDoFilter(ApplicationFilterChain.java:235)
at
org
.apache
.catalina
.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org
.apache
.catalina
.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org
.apache
.catalina
.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org
.apache
.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org
.apache
.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org
.apache
.catalina
.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org
.apache
.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org
.apache
.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:
879)
at
org.apache.coyote.http11.Http11NioProtocol
$Http11ConnectionHandler.process(Http11NioProtocol.java:719)
at
org.apache.tomcat.util.net.NioEndpoint
$SocketProcessor.run(NioEndpoint.java:2080)
at
java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
- locked
java.util.concurrent.locks.reentrantlock$nonfairs...@4d54c7be
I checked the Lucene SVN and it looks like that's still appearing
to be a
bottleneck.
http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java?view=markup
Any tips?
Thanks for your time!
Matthew Runo
Software Engineer, Zappos.com
mr...@zappos.com - 702-943-7833
--
-Yonik
http://www.lucidimagination.com