I understand, and I have corrected that. Unfortunately I still have the issue, but if this is feature complete I will work on it some more and failing to find a solution I will ask the question over on SO. For completeness my Index is created like this:
CREATE CONSTRAINT ON (n:`UniqueId`) ASSERT n.`type` IS UNIQUE And the debug logs now show the below, note that thread 5 and 6 are both returning the uid '3'. Thread-6 DEBUG jta.JtaTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT Thread-3 DEBUG jta.JtaTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT Thread-5 DEBUG jta.JtaTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT Thread-4 DEBUG jta.JtaTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT Thread-7 DEBUG jta.JtaTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT Thread-6 DEBUG query.CypherQueryEngineImpl - Executing cypher query: MERGE (nid:UniqueId{type:{0}}) ON CREATE SET nid:_UniqueId, nid.count = 1 ON MATCH SET nid.count = nid.count + 1 RETURN nid.count params {0=Order} Thread-7 DEBUG query.CypherQueryEngineImpl - Executing cypher query: MERGE (nid:UniqueId{type:{0}}) ON CREATE SET nid:_UniqueId, nid.count = 1 ON MATCH SET nid.count = nid.count + 1 RETURN nid.count params {0=Order} Thread-5 DEBUG query.CypherQueryEngineImpl - Executing cypher query: MERGE (nid:UniqueId{type:{0}}) ON CREATE SET nid:_UniqueId, nid.count = 1 ON MATCH SET nid.count = nid.count + 1 RETURN nid.count params {0=Order} Thread-3 DEBUG query.CypherQueryEngineImpl - Executing cypher query: MERGE (nid:UniqueId{type:{0}}) ON CREATE SET nid:_UniqueId, nid.count = 1 ON MATCH SET nid.count = nid.count + 1 RETURN nid.count params {0=Order} Thread-4 DEBUG query.CypherQueryEngineImpl - Executing cypher query: MERGE (nid:UniqueId{type:{0}}) ON CREATE SET nid:_UniqueId, nid.count = 1 ON MATCH SET nid.count = nid.count + 1 RETURN nid.count params {0=Order} Thread-3 DEBUG jta.JtaTransactionManager - Initiating transaction commit 1 Thread-7 DEBUG jta.JtaTransactionManager - Initiating transaction commit 2 Thread-5 DEBUG jta.JtaTransactionManager - Initiating transaction commit 3 Thread-6 DEBUG jta.JtaTransactionManager - Initiating transaction commit 3 Thread-4 DEBUG jta.JtaTransactionManager - Initiating transaction commit 4 Thank you for your help in correcting the syntax, M On Friday, 29 August 2014 18:14:53 UTC+1, Michael Hunger wrote: > > Currently your merge op uses two labels :UniqueId and :_UniqueId > > Merge only supports guarantees for one label one prop > > You can set the secon label in on create > > Sent from mobile device > > Am 29.08.2014 um 16:30 schrieb Mark Findlater <mark.fi...@googlemail.com > <javascript:>>: > > Thanks Michael. > > Sorry I should have been more clear, there is already a Unique constraint > on the 'type' property. What do you mean by "And only the label from the > constraint"? > > > On Friday, 29 August 2014 15:25:35 UTC+1, Michael Hunger wrote: >> >> You need a unique constraint for this to work >> >> And only the label from the constraint >> >> >> >> Sent from mobile device >> >> Am 29.08.2014 um 15:36 schrieb Mark Findlater <mark.fi...@googlemail.com >> >: >> >> Using Neo4J embedded version 2.1.3 and Spring Data Neo4J 3.1.4.RELEASE >> and seeing odd behaviour when calling MERGE from multiple threads. Is it >> expected that concurrent merge operations (with the same values) will >> result in a single unique node and will operations that use the ON CREATE >> and ON MATCH constructs acquire a write lock on that node? >> >> The last comment from Andres Taylor on the documentation for 2.0 >> <http://docs.neo4j.org/chunked/2.0.0/query-merge.html> suggest that it >> should all be complete by now. >> >> I am seeing an issue with this query where multiple concurrent calls >> return the same value. >> >> MERGE (nid:UniqueId:_UniqueId{type:{0}}) >> ON CREATE SET nid.count = 1 >> ON MATCH SET nid.count = nid.count + 1 >> RETURN nid.count >> >> There is a label index on the type property. >> >> I see the same behaviour whether using the Neo4JTemplate or an annotated >> Repository method, currently I am getting a deadlock when I try using the >> ExecutionEngine directly (looking at this now). I should note that the >> deadlock appears to be in the ForsetiClient so the presence of the HA jars >> on my classpath may be important. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Neo4j" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to neo4j+un...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> >> -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+un...@googlegroups.com <javascript:>. > For more options, visit https://groups.google.com/d/optout. > > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.