Hi All, kind of related to another issue I am working on (
https://issues.apache.org/jira/browse/JCR-778 )

When I get an index failure (as above), often afterwards I get:

javax.jcr.RepositoryException: already contains: _c: already contains: _c:
already contains: _c
   at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(
SearchManager.java:515)
   at org.apache.jackrabbit.core.SearchManager.<init>(SearchManager.java
:250)
   at org.apache.jackrabbit.core.RepositoryImpl.getSystemSearchManager(
RepositoryImpl.java:642)
   at org.apache.jackrabbit.core.RepositoryImpl.access$300(
RepositoryImpl.java:103)
   at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(
RepositoryImpl.java:1638)
   at org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(
RepositoryImpl.java:622)
   at org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(
RepositoryImpl.java:375)
   at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java
:293)
   at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java
:573)
   at org.apache.jackrabbit.core.TransientRepository$2.getRepository(
TransientRepository.java:245)
   at org.apache.jackrabbit.core.TransientRepository.startRepository(
TransientRepository.java:265)
   at org.apache.jackrabbit.core.TransientRepository.login(
TransientRepository.java:333)
   at org.apache.jackrabbit.core.TransientRepository.login(
TransientRepository.java:363)
   at org.drools.repository.RulesRepositoryTest.getNoDelRepo(
RulesRepositoryTest.java:99)
   at org.drools.repository.RulesRepositoryTest.testLoadOnly(
RulesRepositoryTest.java:22)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at junit.framework.TestCase.runTest(TestCase.java:154)
   at junit.framework.TestCase.runBare(TestCase.java:127)
   at junit.framework.TestResult$1.protect(TestResult.java:106)
   at junit.framework.TestResult.runProtected(TestResult.java:124)
   at junit.framework.TestResult.run(TestResult.java:109)
   at junit.framework.TestCase.run(TestCase.java:118)
   at junit.framework.TestSuite.runTest(TestSuite.java:208)
   at junit.framework.TestSuite.run(TestSuite.java:203)
   at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(
JUnit3TestReference.java:128)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:460)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:673)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:386)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:196)
Caused by: java.lang.IllegalArgumentException: already contains: _c
   at org.apache.jackrabbit.core.query.lucene.IndexInfos.addName(
IndexInfos.java:170)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.deleteIndex(
MultiIndex.java:716)
   at
org.apache.jackrabbit.core.query.lucene.MultiIndex$DeleteIndex.execute(
MultiIndex.java:1553)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(
MultiIndex.java:809)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.flush(
MultiIndex.java:740)
   at org.apache.jackrabbit.core.query.lucene.Recovery.run(Recovery.java
:160)
   at org.apache.jackrabbit.core.query.lucene.Recovery.run(Recovery.java
:85)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.<init>(
MultiIndex.java:268)
   at org.apache.jackrabbit.core.query.lucene.SearchIndex.doInit(
SearchIndex.java:245)
   at org.apache.jackrabbit.core.query.AbstractQueryHandler.init(
AbstractQueryHandler.java:44)
   at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(
SearchManager.java:513)
   ... 32 more
java.lang.IllegalArgumentException: already contains: _c
   at org.apache.jackrabbit.core.query.lucene.IndexInfos.addName(
IndexInfos.java:170)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.deleteIndex(
MultiIndex.java:716)
   at
org.apache.jackrabbit.core.query.lucene.MultiIndex$DeleteIndex.execute(
MultiIndex.java:1553)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(
MultiIndex.java:809)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.flush(
MultiIndex.java:740)
   at org.apache.jackrabbit.core.query.lucene.Recovery.run(Recovery.java
:160)
   at org.apache.jackrabbit.core.query.lucene.Recovery.run(Recovery.java
:85)
   at org.apache.jackrabbit.core.query.lucene.MultiIndex.<init>(
MultiIndex.java:268)
   at org.apache.jackrabbit.core.query.lucene.SearchIndex.doInit(
SearchIndex.java:245)
   at org.apache.jackrabbit.core.query.AbstractQueryHandler.init(
AbstractQueryHandler.java:44)
   at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(
SearchManager.java:513)
   at org.apache.jackrabbit.core.SearchManager.<init>(SearchManager.java
:250)
   at org.apache.jackrabbit.core.RepositoryImpl.getSystemSearchManager(
RepositoryImpl.java:642)
   at org.apache.jackrabbit.core.RepositoryImpl.access$300(
RepositoryImpl.java:103)
   at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(
RepositoryImpl.java:1638)
   at org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(
RepositoryImpl.java:622)
   at org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(
RepositoryImpl.java:375)
   at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java
:293)
   at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java
:573)
   at org.apache.jackrabbit.core.TransientRepository$2.getRepository(
TransientRepository.java:245)
   at org.apache.jackrabbit.core.TransientRepository.startRepository(
TransientRepository.java:265)
   at org.apache.jackrabbit.core.TransientRepository.login(
TransientRepository.java:333)
   at org.apache.jackrabbit.core.TransientRepository.login(
TransientRepository.java:363)
...

when trying to login to the repository the next time. This is extremely
alarming to me. If I go in and blow away the contents of the index
directories, it will then work for a while after that (once it has recreted)
but it only takes a dozen or so "cycles" (startup, run a query, shutdown) to
get back into this state.

This got me thinking, how are the lucene indexes kept in sync - they can't
be part of the transaction can they? I mean they can try to be. This worries
me, I don't like being worried.

Any advice much appreciated, this is pretty much stopping the show for me
now.

Also, I have uploaded a repository+test to show the "corrption":
http://www.users.on.net/~michaelneale/work/jackrabbit-JCR-778.-corrupt-index-or-data.zip(mentioned
in the JIRA)

Michael

Reply via email to