On each critical place around the problem areas could you do a: System.out.println( tx.getClass().getSimpleName() );
and if that prints "PlaceboTransaction" then you know you aren't accessing the real/outer transaction, but instead a nested<http://wiki.neo4j.org/content/Transactions#Nested_transactions>transaction. I think that's what's causing it. 2011/2/17 John Howard <johnyho...@gmail.com> > Thanks Mattias & David. > > Yes, am doing tx.success() and tx.finish() when I commit. > I also noticed that once I get IllegalStateException, I cant search for any > nodes from the graph index. > > Here's my code snippet when create,index and commit the nodes & also when > delete the nodes: > > Create nodes: > GraphDatabaseService neo = neoFactory.getNeoService(); > Index indexService = neoFactory.getIndexService(); > > Transaction tx = neo.beginTx(); > try > { > for (Row row: resultRows.values()) > { > try > { > Node newNode = neo.createNode(); > for(String key: row.getKeys()) > { > String value = row.getValue(key); > newNode.setProperty(key,value); > indexService.add( newNode, key.toLowerCase(), value.toLowerCase() ); > indexService.add( newNode, "fulltext", value.toLowerCase() ); > } > }catch(Exception e) > { > e.printStackTrace(); > } > } > tx.success(); > } > finally > { > tx.finish(); > } > > ---------------------------------------------------- > Delete nodes: > > try { > GraphDatabaseService neo = neoFactory.getNeoService(); > Index indexService = neoFactory.getIndexService(); > > Transaction tx = neo.beginTx(); > > List<Node> nodes = getNodeList(indexService.query( index, value )); > System.out.println("Found Removable Nodes:"+nodes.size()); > > for (Node n: nodes) > { > for (Iterator it=n.getRelationships().iterator(); it.hasNext(); ) > { > Relationship r = (Relationship)it.next(); > try{ > r.delete(); > }catch (Exception e) { > e.printStackTrace(); > } > } > Map<String, String> props = getNodesProperties(n); > for (String key: props.keySet()) > { > String val = props.get(key); > indexService.remove(n, key, val); > } > try > { > n.delete(); > } catch (Exception e) > { > e.printStackTrace(); > } > } > tx.success(); > } > finally > { > tx.finish(); > } > > > > On Thu, Feb 17, 2011 at 1:23 AM, David Montag < > david.mon...@neotechnology.com> wrote: > > > John, > > > > Are you doing tx.success() and tx.finish() when you commit? If so, then > you > > likely already have an open transaction for that thread. > > > > If you start a new transaction while already in an open transaction, you > > will get a dummy transaction. It will not do anything when you commit it > > successfully, but if it fails, the parent transaction will fail. The data > > in > > the nested transaction only gets committed when the parent transaction > > commits. So if you've lost the reference to the top-level transaction, > > that's an issue. > > > > Also, if you'd like to share the code, I'd be glad to have a look at it. > > > > David > > > > On Wed, Feb 16, 2011 at 10:00 PM, John Howard <johnyho...@gmail.com> > > wrote: > > > > > We found this strange behaviour with regard to transactions ( we use > > > neo1.3-SNAPSHOT) > > > Here are the steps in our application: > > > > > > 1. created,indexed and commited 10 nodes successfully > > > 2. created, indexed and commited 40 nodes successfully > > > 3. created, indexed and commited 900 nodes successfully > > > 4. we found some app specific mistake in the step 3. So we removed > > indexes, > > > deleted 900 nodes and commited successfully. > > > 5. we tried to query those deleted nodes just to confirm whether delete > > was > > > successful. > > > 6. we were able to search for 900 (deleted)nodes from the index, and > when > > > we > > > tried to access a property of a (deleted) node, it threw the following > > > exception: > > > java.lang.IllegalStateException: Node[7599] has been deleted in this > tx > > > at > > > > > > > > > org.neo4j.kernel.impl.core.LockReleaser.getCowPropertyRemoveMap(LockReleaser.java:445) > > > at > > > > > > > > > org.neo4j.kernel.impl.core.NodeManager.getCowPropertyRemoveMap(NodeManager.java:898) > > > at > > > org.neo4j.kernel.impl.core.Primitive.getPropertyKeys(Primitive.java:99) > > > at > > > > org.neo4j.kernel.impl.core.NodeProxy.getPropertyKeys(NodeProxy.java:129) > > > at > > > neopoc.data.util.graphManager.getNodesProperties(graphManager.java:771) > > > > > > 7. As a result of the above exception, it rolled back step 1 & 2 as > well. > > > So > > > we lost all the nodes. > > > > > > My suspicion is, even though we committed successfullly in the steps 1, > > 2, > > > 3, 4, they were never internally committed. May be some kind of > > > differed/lazy commit and not immediate commit. > > > > > > Thank you for your assistance. > > > > > > - > > > _______________________________________________ > > > Neo4j mailing list > > > User@lists.neo4j.org > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > > > > > > > -- > > David Montag > > Neo Technology, www.neotechnology.com > > Cell: 650.556.4411 > > david.mon...@neotechnology.com > > _______________________________________________ > > Neo4j mailing list > > User@lists.neo4j.org > > https://lists.neo4j.org/mailman/listinfo/user > > > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user