jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Diephouse <dan.diepho...@mulesource.com>
Subject Re: NPE in CachingIndexReader
Date Mon, 23 Mar 2009 22:13:32 GMT
So this error was evidently a bit too obvious for me. I was using an in
memory database store yet the index is persistent. Hence on restart the
nodes were no longer there, but the index was!

On Mon, Mar 23, 2009 at 4:02 PM, Dan Diephouse <dan.diephouse@mulesource.com
> wrote:

> Taking a second look at this, this definitely has something to do with
> jackrabbit shutting down. Although I'm not sure what. If I start with a
> fresh repository I can repeatedly run my test from my IDE without any
> problems. However, when I run the test via maven I get the error below. I
> have verified that I am calling shutdown on the repository correctly.
> Any ideas about places to look for something that might be corrupting the
> index?
> Dan
>
>
> On Mon, Mar 23, 2009 at 11:48 AM, Dan Diephouse <
> dan.diephouse@mulesource.com> wrote:
>
>> I'm getting the following exception with 1.4.x:
>> java.lang.NullPointerException
>> at
>> org.apache.jackrabbit.core.query.lucene.CachingIndexReader$CacheInitializer$2.collect(CachingIndexReader.java:362)
>>  at
>> org.apache.jackrabbit.core.query.lucene.CachingIndexReader$CacheInitializer.collectTermDocs(CachingIndexReader.java:426)
>> at
>> org.apache.jackrabbit.core.query.lucene.CachingIndexReader$CacheInitializer.initializeParents(CachingIndexReader.java:356)
>>  at
>> org.apache.jackrabbit.core.query.lucene.CachingIndexReader$CacheInitializer.run(CachingIndexReader.java:306)
>> at
>> org.apache.jackrabbit.core.query.lucene.CachingIndexReader.<init>(CachingIndexReader.java:109)
>>  at
>> org.apache.jackrabbit.core.query.lucene.AbstractIndex.getReadOnlyIndexReader(AbstractIndex.java:276)
>> at
>> org.apache.jackrabbit.core.query.lucene.MultiIndex.getIndexReader(MultiIndex.java:731)
>>  at
>> org.apache.jackrabbit.core.query.lucene.MultiIndex.<init>(MultiIndex.java:303)
>> at
>> org.apache.jackrabbit.core.query.lucene.SearchIndex.doInit(SearchIndex.java:454)
>>  at
>> org.apache.jackrabbit.core.query.AbstractQueryHandler.init(AbstractQueryHandler.java:53)
>> at
>> org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(SearchManager.java:583)
>>  at
>> org.apache.jackrabbit.core.SearchManager.<init>(SearchManager.java:265)
>> at
>> org.apache.jackrabbit.core.RepositoryImpl.getSystemSearchManager(RepositoryImpl.java:625)
>>  at
>> org.apache.jackrabbit.core.RepositoryImpl.access$300(RepositoryImpl.java:104)
>> at
>> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(RepositoryImpl.java:1600)
>>  at
>> org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImpl.java:606)
>> at
>> org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:415)
>>  at
>> org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:305)
>> at
>> org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:557)
>>
>> The code is:
>>
>>             collectTermDocs(reader, new Term(FieldNames.PARENT, "0"), new
>> TermDocsCollector() {
>>                 public void collect(Term term, TermDocs tDocs) throws
>> IOException {
>>                     while (tDocs.next()) {
>>                         UUID uuid = UUID.fromString(term.text());
>>                         Integer docId = new Integer(tDocs.doc());
>>                         NodeInfo info = (NodeInfo) docs.get(docId);
>>                         info.parent = uuid;
>>                         docs.remove(docId);
>>                         docs.put(info.uuid, info);
>>                     }
>>                 }
>>             });
>>
>> Correct me if I'm wrong, but it seems to me that the code should not
>> assume that there is already a NodeInfo in the docs cache. For instance, if
>> a node was added between when we gathered all the UUIDs and when we searched
>> the parent IDs, then docs.get(docId) could return null. The whole in that
>> explanation though would be that this is happening on initialization and
>> there should be anything/anyone adding/removing nodes.
>>
>> Thoughts?
>>
>> Dan
>> --
>> Dan Diephouse
>> http://mulesource.com | http://netzooid.com/blog
>>
>
>
>
> --
> Dan Diephouse
> http://mulesource.com | http://netzooid.com/blog
>



-- 
Dan Diephouse
http://mulesource.com | http://netzooid.com/blog

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message