OK, I've modified the unit test and it shows something strange now ... assuming I'm not just too tired and messed up again :)
So the previous test, corrected, passes fine, but now after the first transaction is commited, i start a second one where i do the same exact check (node by prop) see: https://bitbucket.org/tcolar/stuff/src/0c4116d5b6ba/AtomikosNeo4j/src/test/java/net/colar/atomikosNeo4j/AtomikosNeo4jTest.java#cl-41 Now in this second transaction the test fails .... org.neo4j.graphdb.NotFoundException: testProp property not found for NodeImpl#1. at org.neo4j.kernel.impl.core.Primitive.newPropertyNotFoundException(Primitive.java:173) at org.neo4j.kernel.impl.core.Primitive.getProperty(Primitive.java:168) at org.neo4j.kernel.impl.core.NodeProxy.getProperty(NodeProxy.java:145) at net.colar.atomikosNeo4j.AtomikosNeo4jTest.test(AtomikosNeo4jTest.java:59) I assume that should work no, am I doing something wrong ? Thanks again. On 10/8/11 10:34 PM, Thibaut Colar wrote: > You are right, was just using that in this (poor) unit test I made > quickly late last week, it's not used in the real code. > > So the unit test does work and does not have the issue I have in the > real and much more complex code. > > I guess I'll try to bring more of it in this unit test until i break it too. > > One of the thing we use, is the neo4j events mechanism(to sync data to > another system), so i wonder if maybe using that in the context of > transactions might cause the issue, or maybe some other sort of > threading issue(what it looked like when i was debugging). > > Anyway will try to see if i can give you a failing test and/or better > info tomorrow or Monday. > > Thanks > > > On 10/8/11 1:51 PM, Mattias Persson wrote: >> The implicit key is "_id_" but that's an implementation detail and shouldn't >> be used to assert correctness of the index in unit tests. >> >> 2011/10/8 Thibaut Colar<tco...@colar.net> >> >>> Actually you are right, seems like "id" is the only one that fails ... i >>> really thought that was implicitly created, could it be possible than >>> somehow it should be but doesn't when using the transaction manager ? >>> >>> On 10/8/11 11:41 AM, Thibaut Colar wrote: >>>> Right, id is an implicit field ... works when not in transaction. >>>> If i remove that test, then I fail on the later index.get. >>>> >>>> As far as deleting the db, it's not in my test, but i removed the folder >>>> in y real code and manually before running the test. >>>> >>>> On 10/8/11 11:10 AM, Rick Bullotta wrote: >>>>> If I remember correctly, neo has an implicit field on each index, and >>> the name is either "id" or "_id". >>>>> On Oct 8, 2011, at 1:58 PM, "Chris Gioran"< >>> chris.gio...@neotechnology.com> wrote: >>>>>> Hi Thibaut, >>>>>> >>>>>> I noticed the following snippet in your test case code: >>>>>> >>>>>> long id = node.getId(); >>>>>> node.setProperty("testProp", "test"); >>>>>> index.add(node, "testProp", "test"); >>>>>> >>>>>> Assert.assertEquals(node.getProperty("testProp"), "test"); >>>>>> >>>>>> // Lookup By id >>>>>> Assert.assertNotNull(graphDb.getNodeById(id)); >>>>>> >>>>>> // Now via Index >>>>>> Node found = index.get("id", id).getSingle(); >>>>>> Assert.assertNotNull(found); >>>>>> Assert.assertEquals(found.getId(), id); >>>>>> >>>>>> which leads to the first test failure with a null result returned. >>>>>> Here you are indexing a node with key "testProp" and value "test" but >>>>>> you go on to ask it from the index with key "id" and value its id. >>>>>> Since you haven't added that key/value pair in the index, rightfully >>>>>> you don't get any results - the test fails in my setup even with the >>>>>> native Neo4j transaction manager. >>>>>> >>>>>> I changed that to ask the node from the index with the proper >>>>>> key/value pair and the test passes - the same thing happens a bit >>>>>> further down where you ask the index for a node with a key/value of >>>>>> "testProp"/"prop" (instead of "testProp"/"test"). Moreover, it passes >>>>>> with both the native Transaction Manager and the Atomikos >>>>>> implementation. >>>>>> >>>>>> Also, you are not deleting the db for the test - this means that since >>>>>> you add to the index nodes with the same key/value the test will pass >>>>>> only on the first run as getSingle() on the index hits will find the >>>>>> previously added nodes and it will fail. >>>>>> >>>>>> Could you try that out and see if it solves your issues? >>>>>> >>>>>> I am glad that this functionality is being used in production - please >>>>>> provide any feedback on any problems and what you think of this >>>>>> feature. >>>>>> >>>>>> hope that helps, >>>>>> CG >>>>>> >>>>>> On Thu, Oct 6, 2011 at 7:50 PM, tcolar<tco...@colar.net> wrote: >>>>>>> I've been trying to make this work for a few days but while it mostly >>> works, >>>>>>> the Lucene index just won't. >>>>>>> >>>>>>> We have a fairly complex setup including neo4j, mysql, mongo and JMS >>> ad >>>>>>> trying to do transactions accross all that with Atomikos. >>>>>>> >>>>>>> Since that is quite complex, I've made a smaller unit test just using >>>>>>> Atomikos and Neo4j to demonstrate the issue: >>>>>>> >>>>>>> https://bitbucket.org/tcolar/stuff/src/ddd17191e9a4/AtomikosNeo4j >>>>>>> >>>>>>> The main test is here: >>>>>>> >>> https://bitbucket.org/tcolar/stuff/src/ddd17191e9a4/AtomikosNeo4j/src/test/java/net/colar/atomikosNeo4j/AtomikosNeo4jTest.java >>>>>>> and results: >>>>>>> >>> https://bitbucket.org/tcolar/stuff/src/ddd17191e9a4/AtomikosNeo4j/test.log >>>>>>> I used >>>>>>> >>> http://digitalstain.blogspot.com/2010/11/using-jotm-as-transactionmanager-in.html >>>>>>> to get me going. >>>>>>> >>>>>>> And my code for that part is here: >>>>>>> >>> https://bitbucket.org/tcolar/stuff/src/ddd17191e9a4/AtomikosNeo4j/src/main/java/net/colar/atomikosNeo4j >>>>>>> I'm thinking that's probably where I'm doing something wrong maybe ? >>>>>>> >>>>>>> I'm probably not doing something right but i can't seem to find what's >>> going >>>>>>> on with Lucene. >>>>>>> >>>>>>> The test works if not using Atomikos but just plain Neo4j >>> Transactions. >>>>>>> Anybody as an idea what is wrong? >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>> http://neo4j-community-discussions.438527.n3.nabble.com/Trying-to-use-Neo4J-with-Atomikos-transaction-manager-issues-with-Lucene-index-tp3400319p3400319.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 >>>>>>> >>>>>> _______________________________________________ >>>>>> 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 >>>> _______________________________________________ >>>> 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 >>> >> > _______________________________________________ > 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