I've searched around the forum, and aware of people who are using different indexes for optimization. I am trying modify the EmbeddedNeo4jWithIndexing.java from the samples directory so support multiple indexes and I kept on getting exception whenever I try to commit the transaction. My use case seems so obvious so there must be a solution for this. If I only have one of the indexes, then it's fine, but whenever I have 2 indexes then it barf'ed!
The scenario I have is one node with a name and a description. I want the description to have full text search, but not the name. So here is the standard setup code (simplified for illustration). g = new EmbeddedGraphDatabase(storeDir); nIndex = g.index().forNodes ("node_name"); dIndex = g.index().forNodes ("node_desc", MapUtil.stringMap(IndexManager.PROVIDER, "lucene", "type", "fulltext")); try{ tx = graphDatabaseService.beginTx(); node = g.createNode(); node.setProperty("name","hello"); node.setProperty("description","this is the description"); nIndex.add(node, "name","hello"); dIndex.add(node, "description","this is the description"); tx.success(); }finally{ tx.finish(); } Here is the exception I got: Sep 6, 2011 8:53:32 PM org.neo4j.kernel.impl.transaction.TxManager commit SEVERE: Commit failed java.nio.channels.OverlappingFileLockException at sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(FileChannelImpl.java:1166) at sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(FileChannelImpl.java:1068) at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:868) at java.nio.channels.FileChannel.tryLock(FileChannel.java:962) at org.apache.lucene.store.NativeFSLock.obtain(NativeFSLockFactory.java:216) at org.apache.lucene.store.Lock.obtain(Lock.java:72) at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1097) at org.neo4j.index.impl.lucene.LuceneDataSource.getIndexWriter(LuceneDataSource.java:588) at org.neo4j.index.impl.lucene.CommitContext.ensureWriterInstantiated(CommitContext.java:59) at org.neo4j.index.impl.lucene.LuceneCommand$AddCommand.perform(LuceneCommand.java:188) at org.neo4j.index.impl.lucene.LuceneTransaction.doCommit(LuceneTransaction.java:259) at org.neo4j.kernel.impl.transaction.xaframework.XaTransaction.commit(XaTransaction.java:319) at org.neo4j.kernel.impl.transaction.xaframework.XaResourceManager.commit(XaResourceManager.java:456) at org.neo4j.kernel.impl.transaction.xaframework.XaResourceHelpImpl.commit(XaResourceHelpImpl.java:64) at org.neo4j.kernel.impl.transaction.TransactionImpl.doCommit(TransactionImpl.java:516) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:659) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:622) at org.neo4j.kernel.impl.transaction.TransactionImpl.commit(TransactionImpl.java:107) at org.neo4j.kernel.TopLevelTransaction.finish(TopLevelTransaction.java:85) EmbeddedNeo4jWithIndexing.main(EmbeddedNeo4jWithIndexing.java:85) 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:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Sep 6, 2011 8:53:32 PM org.neo4j.kernel.impl.transaction.TxManager commit SEVERE: Unable to rollback transaction. Some resources may be commited others not. Neo4j kernel should be SHUTDOWN for resource maintance and transaction recovery ----> javax.transaction.xa.XAException: Unknown xid[GlobalId[NEOKERNL|-1963523328321029165|2], BranchId[ 52 49 52 49 52 49 ]] at org.neo4j.kernel.impl.transaction.xaframework.XaResourceManager.rollback(XaResourceManager.java:481) at org.neo4j.kernel.impl.transaction.xaframework.XaResourceHelpImpl.rollback(XaResourceHelpImpl.java:111) at org.neo4j.kernel.impl.transaction.TransactionImpl.doRollback(TransactionImpl.java:533) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:685) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:622) at org.neo4j.kernel.impl.transaction.TransactionImpl.commit(TransactionImpl.java:107) at org.neo4j.kernel.TopLevelTransaction.finish(TopLevelTransaction.java:85) EmbeddedNeo4jWithIndexing.main(EmbeddedNeo4jWithIndexing.java:85) 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:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Exception in thread "main" org.neo4j.graphdb.TransactionFailureException: Unable to commit transaction at org.neo4j.kernel.TopLevelTransaction.finish(TopLevelTransaction.java:104) EmbeddedNeo4jWithIndexing.main(EmbeddedNeo4jWithIndexing.java:85) 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:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: javax.transaction.HeuristicMixedException: Unable to rollback ---> error in commit: java.nio.channels.OverlappingFileLockException ---> error code for rollback: 0 at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:703) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:622) at org.neo4j.kernel.impl.transaction.TransactionImpl.commit(TransactionImpl.java:107) at org.neo4j.kernel.TopLevelTransaction.finish(TopLevelTransaction.java:85) ... 6 more Caused by: javax.transaction.xa.XAException: Unknown xid[GlobalId[NEOKERNL|-1963523328321029165|2], BranchId[ 52 49 52 49 52 49 ]] at org.neo4j.kernel.impl.transaction.xaframework.XaResourceManager.rollback(XaResourceManager.java:481) at org.neo4j.kernel.impl.transaction.xaframework.XaResourceHelpImpl.rollback(XaResourceHelpImpl.java:111) at org.neo4j.kernel.impl.transaction.TransactionImpl.doRollback(TransactionImpl.java:533) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:685) ... 9 more -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/multiple-lucene-index-in-a-transaction-doesn-t-work-tp3315601p3315601.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user