Hi All,


I'm posting here because I'm having a problem, and I feel like my question 
is too complex for StackOverflow. I've searched StackOverflow and the 
documentation for a help, but I'm really not sure exactly where to start 
with this, and if someone could provide some guidance, I'd really 
appreciate it.


I'm having a very strange problem. I'm writing an application that's 
basically a RESTful CRUD tool, which allows users to enter various kinds of 
data. I'm using Neo4J Embedded 2.3.6, writing in Scala using the Play 
framework. One kind of data is giving me problems, which I call a Schema. A 
Schema is one node type, and it can have several Field nodes. Schemas and 
Fields are created through the same request. Both Schema and Field nodes 
have several types of relations, and some point to existing nodes.


The problem is that when a user creates a new Schema, sometimes the data 
will disappear randomly. By that I mean that when I creates a Schema 
through the user interface, sometimes the newly-created Schema will show up 
in my application’s list of Schemas (in my UI and REST interface), but then 
it will disappear after I reload the list of Schemas a few times. Then, it 
will sometimes stay gone, or sometimes come back. Usually, the first few 
Schemas I create don't disappear. However, after I create the first few 
Schemas, whether a Schema disappears becomes random. Deletions can also be 
somewhat random. For example, once I created four schemas, then deleted 
one. Then, two of the Schemas I'd created disappeared, and the deleted one 
reappeared, and nothing else changed.


The best I can tell, the problem is with Neo4j Embedded (though I'm happy 
to be told I'm wrong). My unit tests for all these functions pass, though 
they use an ImpermanentDatabase. I’m pretty sure the problem isn’t browser 
caching because I’ve turned off caching in Chrome, and if I stop the 
application, the state of the database at that moment will be frozen when I 
stop the application.


There are two other weird things. First, the entire Schema creation process 
is wrapped in a transaction, so the process of creating a Schema should be 
atomic. In other words, either a Schema and its Fields should all be 
created together, or not created at all. I never see a failure message, or 
get a transaction failure exception. However, sometimes the Schema node 
will show up in the list of Schemas, but the Field nodes won't, although 
they will show up later. Second, as I create more Schemas, the creation 
process takes longer and longer. Eventually, it will get so slow that it 
will take the application down. It will then speed back up when I restart 
the application. I think there's some kind of leak, but I'm having a hard 
time pinning down where that's coming from.


So, my question is, where should I start looking? My best guess is that 
this is something with Neo4j and how I’m using it. I think it’s a problem 
with Neo4j because the changes persist across multiple requests, and I 
don't have any in-application caching. Also, JVisualVM shows that most of 
the time in my application is spent in various MuninPage methods.


For reference, here’s my code, in Scala. I can translate this into Java if 
that will help: http://pastebin.com/sZ3EwLB1


Apologies for the long post--I'm just not sure where to begin. Again, I'd 
appreciate any guidance.


Thanks,

Dave

-- 
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.

Reply via email to