All, We have a highly concurrent custom bulk loader. When we run it using the community version of Neo4j 2.1.5 it executes flawlessly. When we run it against the enterprise version we see a race condition happening.
Here is a simplified version of the workflow and what is happening: During our load process we create a transaction within the scope of a thread and within that transaction we create a node. We store the node id in an AtomicLong and pass that to another thread. There is another thread running (in its own transaction) that receives the AtomicLong from the thread the created the aforementioned node. It is waiting on that node to get created because it has another node that needs to create a relationship to that node. Because we know that the previous thread may not have committed the transaction in which this node was created (the thread is creating many nodes) we first perform a getNodeById to see if the node is available. If it isn’t, we essentially throw it back and come back to it later in the cycle. If the call to getNodeById doesn’t throw a NodeNotFoundException, then we know the transaction has been committed. Slightly later within this same thread we now attempt to retrieve that node by its id and we now get a NodeNotFoundException. If we pause the loader at this point, or even wait for it to finish, and then use the neo shell to check for the existence of the node we see that it exists. It wasn’t deleted (there are no deletions happening in this process anyways). Can someone PLEASE explain what is happening here? -- Clark Richey Chief Technology Officer e: [email protected] p: 240.252.7507 This message and any included attachments are property of FactGem and its affiliates, and are intended only for the addressee(s). The information contained herein may include trade secrets or privileged or otherwise confidential information. Unauthorized review, forwarding, printing, copying, distributing, or using such information is strictly prohibited and may be unlawful. If you received this message in error, or have reason to believe you are not authorized to receive it, please promptly delete this message and notify the sender by e-mail. Thank you. -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
