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
[email protected]
https://lists.neo4j.org/mailman/listinfo/user