Re: [Neo4j] java.lang.IllegalArgumentException launching 1.5M02
Rasied https://github.com/neo4j/packaging/issues/2 and will investigate. Thanks for reporting! Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - NOSQL for the Enterprise. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. On Fri, Nov 4, 2011 at 10:14 PM, Romiko Derbynew romiko.derby...@readify.net wrote: Any custom JVM switches do not work. Sent from my iPhone On 03/11/2011, at 8:56 AM, Tatham Oddie tat...@oddie.com.au wrote: Any tips on where to start? I'm going to go looking for ServerProcessConsole.java but any other pointers are welcome. :) C:\AzureTemp\Resources\2e546563-a35c-42f6-b903-03317cfdf847\directory\Neo4jInst\neo4j-community-1.5.M02\binNeo4j.bat java.lang.IllegalArgumentException at java.lang.ProcessImpl.init(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at org.neo4j.wrapper.ServerProcessConsole.doStart(ServerProcessConsole.java:39) at org.neo4j.wrapper.ServerProcess.init(ServerProcess.java:116) at org.neo4j.wrapper.ServerProcessConsole.init(ServerProcessConsole.java:29) at org.neo4j.wrapper.NeoServiceWrapper.launchAsConsoleApp(NeoServiceWrapper.java:48) at org.neo4j.wrapper.NeoServiceWrapper.main(NeoServiceWrapper.java:35) C:\AzureTemp\Resources\2e546563-a35c-42f6-b903-03317cfdf847\directory\Neo4jInst\neo4j-community-1.5.M02\bin -- Tatham Oddie au mob: +61 414 275 989, us cell: +1 415 598 8201, skype: tathamoddie If you're printing this email, you're doing it wrong. This is a computer, not a typewriter. ___ 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
Re: [Neo4j] 1.5.M02 - JVM BootStrapper Issues
Romiko, this is probably linked to the same issue, https://github.com/neo4j/packaging/issues/2 Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - NOSQL for the Enterprise. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. On Thu, Nov 3, 2011 at 4:07 PM, Romiko Derbynew romiko.derby...@readify.net wrote: Hi Guys, I have downloaded the latest Community edition and notice these three custom lines of code causing the Neo4J server not to start up: wrapper.java.additional.1=-d64 wrapper.java.additional.1=-server wrapper.java.additional.1=-Xss2048k With the previous version, they worked fine. They live at the bottom of the neo4j-wrapper.conf Error I get is. java.lang.IllegalArgumentException at java.lang.ProcessImpl.init(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at org.neo4j.wrapper.ServerProcessConsole.doStart(ServerProcessConsole.j ava:39) at org.neo4j.wrapper.ServerProcess.init(ServerProcess.java:116) at org.neo4j.wrapper.ServerProcessConsole.init(ServerProcessConsole.ja va:29) at org.neo4j.wrapper.NeoServiceWrapper.launchAsConsoleApp(NeoServiceWrap per.java:48) at org.neo4j.wrapper.NeoServiceWrapper.main(NeoServiceWrapper.java:35) Is this expected, since I am sure the JVM should support adding these additional parameters? I want these in here, so I can always ensure it is 64bit, server mode with a stack size of 2048k ___ 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
Re: [Neo4j] Cypher DSL and result mapping
On 11/5/11 24:41 , Daniel Yokomizo wrote: Is there a raw type if nothing is provided (e.g. MapString,Object with alias,result)? With something like this the programmer can use any mapping tool after. But would be nice to have json support. The Projection class does not perform the query (the results are passed into it), so if you want the raw IterableMap,Object, simply don't use Projection. Support for JSON is a great idea though! /Rickard -- Rickard Öberg Developer Neo Technology Twitter: @rickardoberg, Skype: rickardoberg ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Cypher question
Good point. I'd believe that thinking of a single node as a degenerated path wouldn't be that wrong either. However, even returning just the callee (which is what I wanted anyways) brings no relief, with the relationship direction having no influence: 08:42:33,150 GraphQuery.java 81 INFO - START callee=node:node_auto_index('type:*Service') MATCH p=(caller)-[r?:CALLS]-(callee) WHERE r IS NULL RETURN callee Exception in thread main java.lang.AssertionError: assertion failed at scala.Predef$.assert(Predef.scala:89) at org.neo4j.cypher.PathImpl.init(PathImpl.scala:34) at org.neo4j.cypher.pipes.NamedPathPipe$$anonfun$foreach$1.apply(NamedPathPipe.scala:50) at org.neo4j.cypher.pipes.NamedPathPipe$$anonfun$foreach$1.apply(NamedPathPipe.scala:39) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(MatchPipe.scala:37) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(MatchPipe.scala:37) at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) at scala.collection.immutable.List.foreach(List.scala:45) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1.apply(MatchPipe.scala:37) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1.apply(MatchPipe.scala:36) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(StartPipe.scala:36) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(StartPipe.scala:35) at scala.collection.Iterator$class.foreach(Iterator.scala:652) at scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:573) at scala.collection.IterableLike$class.foreach(IterableLike.scala:73) at scala.collection.JavaConversions$JIterableWrapper.foreach(JavaConversions.scala:587) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1.apply(StartPipe.scala:35) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1.apply(StartPipe.scala:34) at org.neo4j.cypher.pipes.ParameterPipe.foreach(ParameterPipe.scala:27) at org.neo4j.cypher.pipes.StartPipe.foreach(StartPipe.scala:34) at org.neo4j.cypher.pipes.MatchPipe.foreach(MatchPipe.scala:36) at org.neo4j.cypher.pipes.NamedPathPipe.foreach(NamedPathPipe.scala:39) at scala.collection.TraversableLike$class.filter(TraversableLike.scala:212) at org.neo4j.cypher.pipes.Pipe.filter(Pipe.scala:31) at org.neo4j.cypher.pipes.FilterPipe.foreach(FilterPipe.scala:30) at org.neo4j.cypher.pipes.TransformPipe.foreach(TransformPipe.scala:38) at org.neo4j.cypher.pipes.ColumnFilterPipe.foreach(ColumnFilterPipe.scala:35) at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:128) at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242) at org.neo4j.cypher.pipes.Pipe.toList(Pipe.scala:31) at org.neo4j.cypher.ExecutionResult$class.dumpToString(ExecutionResult.scala:69) at org.neo4j.cypher.pipes.ColumnFilterPipe.dumpToString(ColumnFilterPipe.scala:25) at sandbox.GraphQuery.doQuery(GraphQuery.java:86) at sandbox.GraphQuery.run(GraphQuery.java:74) at sandbox.GraphQuery.main(GraphQuery.java:30) -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Cypher-question-tp3479960p3482144.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
Re: [Neo4j] Cypher question
Did you try the query I gave you? The problem is not that you are returning p, it's that you ask Cypher to create a path with nulls in it. Just remove the p= in the beginning of the MATCH clause, and you should be good to go. Andrés On Sat, Nov 5, 2011 at 8:45 AM, jschweigl johann.schwe...@gmail.com wrote: Good point. I'd believe that thinking of a single node as a degenerated path wouldn't be that wrong either. However, even returning just the callee (which is what I wanted anyways) brings no relief, with the relationship direction having no influence: 08:42:33,150 GraphQuery.java 81 INFO - START callee=node:node_auto_index('type:*Service') MATCH p=(caller)-[r?:CALLS]-(callee) WHERE r IS NULL RETURN callee Exception in thread main java.lang.AssertionError: assertion failed at scala.Predef$.assert(Predef.scala:89) at org.neo4j.cypher.PathImpl.init(PathImpl.scala:34) at org.neo4j.cypher.pipes.NamedPathPipe$$anonfun$foreach$1.apply(NamedPathPipe.scala:50) at org.neo4j.cypher.pipes.NamedPathPipe$$anonfun$foreach$1.apply(NamedPathPipe.scala:39) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(MatchPipe.scala:37) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(MatchPipe.scala:37) at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) at scala.collection.immutable.List.foreach(List.scala:45) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1.apply(MatchPipe.scala:37) at org.neo4j.cypher.pipes.MatchPipe$$anonfun$foreach$1.apply(MatchPipe.scala:36) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(StartPipe.scala:36) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1$$anonfun$apply$1.apply(StartPipe.scala:35) at scala.collection.Iterator$class.foreach(Iterator.scala:652) at scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:573) at scala.collection.IterableLike$class.foreach(IterableLike.scala:73) at scala.collection.JavaConversions$JIterableWrapper.foreach(JavaConversions.scala:587) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1.apply(StartPipe.scala:35) at org.neo4j.cypher.pipes.StartPipe$$anonfun$foreach$1.apply(StartPipe.scala:34) at org.neo4j.cypher.pipes.ParameterPipe.foreach(ParameterPipe.scala:27) at org.neo4j.cypher.pipes.StartPipe.foreach(StartPipe.scala:34) at org.neo4j.cypher.pipes.MatchPipe.foreach(MatchPipe.scala:36) at org.neo4j.cypher.pipes.NamedPathPipe.foreach(NamedPathPipe.scala:39) at scala.collection.TraversableLike$class.filter(TraversableLike.scala:212) at org.neo4j.cypher.pipes.Pipe.filter(Pipe.scala:31) at org.neo4j.cypher.pipes.FilterPipe.foreach(FilterPipe.scala:30) at org.neo4j.cypher.pipes.TransformPipe.foreach(TransformPipe.scala:38) at org.neo4j.cypher.pipes.ColumnFilterPipe.foreach(ColumnFilterPipe.scala:35) at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:128) at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242) at org.neo4j.cypher.pipes.Pipe.toList(Pipe.scala:31) at org.neo4j.cypher.ExecutionResult$class.dumpToString(ExecutionResult.scala:69) at org.neo4j.cypher.pipes.ColumnFilterPipe.dumpToString(ColumnFilterPipe.scala:25) at sandbox.GraphQuery.doQuery(GraphQuery.java:86) at sandbox.GraphQuery.run(GraphQuery.java:74) at sandbox.GraphQuery.main(GraphQuery.java:30) -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Cypher-question-tp3479960p3482144.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
Re: [Neo4j] Cypher question
Stupid me. Sorry. I should have copypasted your query. Yes, without the path assignment it works. Thanks a lot! -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Cypher-question-tp3479960p3482176.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
Re: [Neo4j] Cypher-Pickle?
+1 I love Cypher's ASCII art, and Josh's idea of drawing Cypher inside a whiteboarded graph is wonderful. I really don't want Cypher to pander to SQL. Cypher is about graph matching and should be awesome at it - its duty to us newbies is simply to be humane not identical to what I (think I) already know. Jim On 5 Nov 2011, at 03:48, jadell wrote: Mattias Persson-2 wrote: 2011/11/4 maxdemarzi lt;maxdemarzi@gt; I'd say the strongest part of Cypher is the ascii art pattern where you clearly see what you're querying for, right there and then without having to parse it into a graph into your head. Removing that would reduce my interest in this language significantly. This! A thousand times this! Whenever I'm trying to explain how you find connected information without joins, people's eyes tend to glaze over until I a) draw the graph on the whiteboard, b) write out the Cypher query *directly inside the graph*. That's the no f-ing way! moment for most people to see the power of graphs and graph query languages. -- Josh Adell -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Neo4j-Cypher-Pickle-tp3480817p3481871.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
Re: [Neo4j] Node Id generation deadlock
You'd have to go with another solution then. Is your application this critical to write throughput or are you just thinking ahead and making sure that it some day might need to support an amount of write throughput? 2011/11/3 Yaniv Ben Yosef yani...@gmail.com Hi, I've also been wondering about this subject. According to the Neo4J design guide ( http://wiki.neo4j.org/content/Design_Guide) the factory node and id generator patterns are the way to implement sequential ID generation. However, according to this thread, it sounds like in a multi-threaded environment I have one of two choices: 1. lock the factory node. However this will force transaction serialization. That's not practical in my app. 2. reducing the granularity of the transactions - in the sense that each transaction should only contain one node creation (of the same type, i.e. uses the same factory node). That's not practical for me either, because in several cases I would like to create more than one node in the same transaction. Since the design guide recommends the factory node pattern, I'm wondering if there's anything I'm missing here, or that I should just avoid this pattern and use some other ID generation mechanism. Thanks, Yaniv On Thu, Nov 3, 2011 at 11:13 AM, Mattias Persson matt...@neotechnology.comwrote: 2011/11/3 Cres cre...@gmail.com This solution would have been ok if I had only one node created from that factory in each transaction. It doesn't matter... after factory.setProperty is run that transaction has got a write lock on that factory node which is held until the transaction committs. The benefit you get from my proposal would be that you make sure you read the correct value. however, as shown in the sample code I posted in the original message, I have multiple nodes created in one transaction, and multiple such transactions in multiple threads. So while the creation of the actual nodes will of course be serialized, one thread's transaction will have to wait for the other thread's transaction to finish completely, and so if the first thread has some processing to do between the creation of the first and second nodes, the other third won't be able to create its two nodes in the meanwhile, because the first thread will have the lock on the factory node until the entire transaction completes. I'm looking for a way to do this having the nodes creation serialized but without having the entire transactions serialized, possibly by somehow releasing the lock on the factory node in mid-transaction, or by any other method. Thanks again, Ran. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Node-Id-generation-deadlock-tp3473118p3476498.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 -- 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 ___ 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
Re: [Neo4j] Cypher-Pickle?
On Nov 5, 2011 1:51 PM, Jim Webber j...@neotechnology.com wrote: I really don't want Cypher to pander to SQL. Cypher is about graph matching and should be awesome at it PQL isn't any different in this aspect. Mattias' ascii-art is still the way to describe your pattern. Cypher is already very like SQL in many ways - PQL is a way to acknowledge these similarities and turn them into a selling point instead. Andrés ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Cypher-Pickle?
People already familiar with graphs seem to love the original Cypher syntax while newbies may find it helpful to start with something they already know. What about letting both coexist peacefully? Axel Am 05.11.2011 14:29, schrieb Andres Taylor: On Nov 5, 2011 1:51 PM, Jim Webberj...@neotechnology.com wrote: I really don't want Cypher to pander to SQL. Cypher is about graph matching and should be awesome at it PQL isn't any different in this aspect. Mattias' ascii-art is still the way to describe your pattern. Cypher is already very like SQL in many ways - PQL is a way to acknowledge these similarities and turn them into a selling point instead. Andrés ___ 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
Re: [Neo4j] Cypher-Pickle?
newbies may find it helpful to start with something they already know. One problem with this is that it could invoke a tendency to try to map relational concepts onto a graph db. The two types of database are fundamentally different at the lowest level and if one starts off by thinking where do I put my 'tables'? they are only heading down the wrong path. I mentioned a while back that I felt designing a graph database is more akin to OO design that to relational design. Maybe we should stop using the word database?? :-P * * *Nigel Small* Phone: +44 7814 638 246 Blog: http://nigelsmall.name/ GTalk: ni...@nigelsmall.name MSN: nasm...@live.co.uk Skype: technige Twitter: @technige https://twitter.com/#!/technige LinkedIn: http://uk.linkedin.com/in/nigelsmall On 5 November 2011 14:03, Axel Morgner a...@morgner.de wrote: People already familiar with graphs seem to love the original Cypher syntax while newbies may find it helpful to start with something they already know. What about letting both coexist peacefully? Axel Am 05.11.2011 14:29, schrieb Andres Taylor: On Nov 5, 2011 1:51 PM, Jim Webberj...@neotechnology.com wrote: I really don't want Cypher to pander to SQL. Cypher is about graph matching and should be awesome at it PQL isn't any different in this aspect. Mattias' ascii-art is still the way to describe your pattern. Cypher is already very like SQL in many ways - PQL is a way to acknowledge these similarities and turn them into a selling point instead. Andrés ___ 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
Re: [Neo4j] Node Id generation deadlock
FWIW, you might be better off pipelining these writes through a single worker thread/queue. It helps with a few performance issues: 1) you can avoid synchronization concerns 2) you can manage block writes (e.g. a number of writes in a single transaction) more easily and 3) you can (if you choose) implement throttling/queueing to support burst mode scenarios where the # requests to write data exceed your ability to process them (and to provide responsiveness for queries). This is what we do with our activity stream engine in ThingWorx. Note that the same applies for deleting entries - we try to do bulk deletes as well. From: user-boun...@lists.neo4j.org [user-boun...@lists.neo4j.org] On Behalf Of Mattias Persson [matt...@neotechnology.com] Sent: Saturday, November 05, 2011 9:14 AM To: Neo4j user discussions Subject: Re: [Neo4j] Node Id generation deadlock You'd have to go with another solution then. Is your application this critical to write throughput or are you just thinking ahead and making sure that it some day might need to support an amount of write throughput? 2011/11/3 Yaniv Ben Yosef yani...@gmail.com Hi, I've also been wondering about this subject. According to the Neo4J design guide ( http://wiki.neo4j.org/content/Design_Guide) the factory node and id generator patterns are the way to implement sequential ID generation. However, according to this thread, it sounds like in a multi-threaded environment I have one of two choices: 1. lock the factory node. However this will force transaction serialization. That's not practical in my app. 2. reducing the granularity of the transactions - in the sense that each transaction should only contain one node creation (of the same type, i.e. uses the same factory node). That's not practical for me either, because in several cases I would like to create more than one node in the same transaction. Since the design guide recommends the factory node pattern, I'm wondering if there's anything I'm missing here, or that I should just avoid this pattern and use some other ID generation mechanism. Thanks, Yaniv On Thu, Nov 3, 2011 at 11:13 AM, Mattias Persson matt...@neotechnology.comwrote: 2011/11/3 Cres cre...@gmail.com This solution would have been ok if I had only one node created from that factory in each transaction. It doesn't matter... after factory.setProperty is run that transaction has got a write lock on that factory node which is held until the transaction committs. The benefit you get from my proposal would be that you make sure you read the correct value. however, as shown in the sample code I posted in the original message, I have multiple nodes created in one transaction, and multiple such transactions in multiple threads. So while the creation of the actual nodes will of course be serialized, one thread's transaction will have to wait for the other thread's transaction to finish completely, and so if the first thread has some processing to do between the creation of the first and second nodes, the other third won't be able to create its two nodes in the meanwhile, because the first thread will have the lock on the factory node until the entire transaction completes. I'm looking for a way to do this having the nodes creation serialized but without having the entire transactions serialized, possibly by somehow releasing the lock on the factory node in mid-transaction, or by any other method. Thanks again, Ran. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Node-Id-generation-deadlock-tp3473118p3476498.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 -- 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 ___ 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 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Node Id generation deadlock
Oh, and one more benefit - if you want to implement a distributed/sharded storage engine, this abstraction through a write queue makes it much, much simpler and more transparent to the application. From: user-boun...@lists.neo4j.org [user-boun...@lists.neo4j.org] On Behalf Of Rick Bullotta [rick.bullo...@thingworx.com] Sent: Saturday, November 05, 2011 11:24 AM To: Neo4j user discussions Subject: Re: [Neo4j] Node Id generation deadlock FWIW, you might be better off pipelining these writes through a single worker thread/queue. It helps with a few performance issues: 1) you can avoid synchronization concerns 2) you can manage block writes (e.g. a number of writes in a single transaction) more easily and 3) you can (if you choose) implement throttling/queueing to support burst mode scenarios where the # requests to write data exceed your ability to process them (and to provide responsiveness for queries). This is what we do with our activity stream engine in ThingWorx. Note that the same applies for deleting entries - we try to do bulk deletes as well. From: user-boun...@lists.neo4j.org [user-boun...@lists.neo4j.org] On Behalf Of Mattias Persson [matt...@neotechnology.com] Sent: Saturday, November 05, 2011 9:14 AM To: Neo4j user discussions Subject: Re: [Neo4j] Node Id generation deadlock You'd have to go with another solution then. Is your application this critical to write throughput or are you just thinking ahead and making sure that it some day might need to support an amount of write throughput? 2011/11/3 Yaniv Ben Yosef yani...@gmail.com Hi, I've also been wondering about this subject. According to the Neo4J design guide ( http://wiki.neo4j.org/content/Design_Guide) the factory node and id generator patterns are the way to implement sequential ID generation. However, according to this thread, it sounds like in a multi-threaded environment I have one of two choices: 1. lock the factory node. However this will force transaction serialization. That's not practical in my app. 2. reducing the granularity of the transactions - in the sense that each transaction should only contain one node creation (of the same type, i.e. uses the same factory node). That's not practical for me either, because in several cases I would like to create more than one node in the same transaction. Since the design guide recommends the factory node pattern, I'm wondering if there's anything I'm missing here, or that I should just avoid this pattern and use some other ID generation mechanism. Thanks, Yaniv On Thu, Nov 3, 2011 at 11:13 AM, Mattias Persson matt...@neotechnology.comwrote: 2011/11/3 Cres cre...@gmail.com This solution would have been ok if I had only one node created from that factory in each transaction. It doesn't matter... after factory.setProperty is run that transaction has got a write lock on that factory node which is held until the transaction committs. The benefit you get from my proposal would be that you make sure you read the correct value. however, as shown in the sample code I posted in the original message, I have multiple nodes created in one transaction, and multiple such transactions in multiple threads. So while the creation of the actual nodes will of course be serialized, one thread's transaction will have to wait for the other thread's transaction to finish completely, and so if the first thread has some processing to do between the creation of the first and second nodes, the other third won't be able to create its two nodes in the meanwhile, because the first thread will have the lock on the factory node until the entire transaction completes. I'm looking for a way to do this having the nodes creation serialized but without having the entire transactions serialized, possibly by somehow releasing the lock on the factory node in mid-transaction, or by any other method. Thanks again, Ran. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Node-Id-generation-deadlock-tp3473118p3476498.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 -- 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 ___ 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
Re: [Neo4j] SDG 2.0.0.M1 cross-store does not work properly
March, could you try to test this on snapshot? I solved an issue regarding that. I'll add the test you mentioned as well Thanks for the feedback. Michael mobile mail please excuse brevity and typos Am 04.11.2011 um 23:00 schrieb Marcin Zasepa se...@vp.pl: Hi guys, i just migrated from SDG 1.1 to 2.0.0.M1 and I am facing problem with cross-store functionality. I have some entities which are partially stored in Neo and partially in rdbms. Everything works ok so far entity class has only primitive members or sets of other entities mapped using @RelatedTo annotation. Problems begin if I have one entity /A/ with partial=true which refers with @OneToMany another entity /B/ which is pure JPA entity. Trying to save entity *A *i get an exception: Type class B is neither a @NodeEntity nor a @RelationshipEntity.This kind of mappings worked properly with SDG 1.1. In order to reproduce this problem in environment independent from my application i add simple relation to the User test class in spring-data-neo4j-cross-store tests: @Entity @NodeEntity(partial = true) public class User { . @OneToMany(mappedBy=user) private SetLocation locations; } , where Location class is defined as follows: @Entity @Table(name = LOCATION) public class Location { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = id) private Long id; @ManyToOne @JoinColumn(name=userId) private User user; } Running ReccomendationTest after this changes, causes that the first test fails with an exception: org.springframework.data.neo4j.mapping.InvalidEntityTypeException: Type class org.springframework.data.neo4j.partial.Location is neither a @NodeEntity nor a @RelationshipEntity. What is even more interesting is that it happens only to the first run test, that is why two other test are not failing but if i invoke only one test for example the second one: jpaUserCanHaveGraphProperties then it fails with the same exception. Could you have a look on that and let me know if I am something changed in SDG 2.0 or it is indeed bug. Thanks in advance! Greets. -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/SDG-2-0-0-M1-cross-store-does-not-work-properly-tp3481372p3481372.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
Re: [Neo4j] 1.5.M02 - JVM BootStrapper Issues
This issue was unintentionally introduced along with some changes needed for better control and output from the windows wrapper. It was a regression that has now been fixed. I would suggest either - waiting for the next release, or - if you are feeling adventurous, download a snapshot windows build (http://neo4j.org/download/), extract bin/windows-service-wrapper-3-SNAPSHOT.jar, rename that to windows-service-wrapper-2.jar and replace the existing jar under bin/ in your current installation - the important thing is for the new jar to have the same filename as the old one. That should fix all issues that you have. As a side note, i would really appreciate if you confirmed that your configuration runs with a SNAPSHOT build. thanks, CG On Sat, Nov 5, 2011 at 8:33 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Romiko, this is probably linked to the same issue, https://github.com/neo4j/packaging/issues/2 Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - NOSQL for the Enterprise. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. On Thu, Nov 3, 2011 at 4:07 PM, Romiko Derbynew romiko.derby...@readify.net wrote: Hi Guys, I have downloaded the latest Community edition and notice these three custom lines of code causing the Neo4J server not to start up: wrapper.java.additional.1=-d64 wrapper.java.additional.1=-server wrapper.java.additional.1=-Xss2048k With the previous version, they worked fine. They live at the bottom of the neo4j-wrapper.conf Error I get is. java.lang.IllegalArgumentException at java.lang.ProcessImpl.init(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at org.neo4j.wrapper.ServerProcessConsole.doStart(ServerProcessConsole.j ava:39) at org.neo4j.wrapper.ServerProcess.init(ServerProcess.java:116) at org.neo4j.wrapper.ServerProcessConsole.init(ServerProcessConsole.ja va:29) at org.neo4j.wrapper.NeoServiceWrapper.launchAsConsoleApp(NeoServiceWrap per.java:48) at org.neo4j.wrapper.NeoServiceWrapper.main(NeoServiceWrapper.java:35) Is this expected, since I am sure the JVM should support adding these additional parameters? I want these in here, so I can always ensure it is 64bit, server mode with a stack size of 2048k ___ 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
Re: [Neo4j] Cypher-Pickle?
IMHO, the differential key of Cypher regarding to SQL, is the way in which Cypher builds the joins. I mean, the clause PATTERN or WHERE written like lucy-[:ACTS_IN]-movie-[:ACTS_IN]-co_actor is pretty powerful. The rest of the details are unimportant, in the sense they already have an equivalence in SQL. So, I think to use SQL-like queries could attract more people interested in Neo4j. And at the same time, this people will discover the versatility of the Cypher JOINs. Regards. On Sat, Nov 5, 2011 at 10:33, Nigel Small ni...@nigelsmall.name wrote: newbies may find it helpful to start with something they already know. One problem with this is that it could invoke a tendency to try to map relational concepts onto a graph db. The two types of database are fundamentally different at the lowest level and if one starts off by thinking where do I put my 'tables'? they are only heading down the wrong path. I mentioned a while back that I felt designing a graph database is more akin to OO design that to relational design. Maybe we should stop using the word database?? :-P * * *Nigel Small* Phone: +44 7814 638 246 Blog: http://nigelsmall.name/ GTalk: ni...@nigelsmall.name MSN: nasm...@live.co.uk Skype: technige Twitter: @technige https://twitter.com/#!/technige LinkedIn: http://uk.linkedin.com/in/nigelsmall On 5 November 2011 14:03, Axel Morgner a...@morgner.de wrote: People already familiar with graphs seem to love the original Cypher syntax while newbies may find it helpful to start with something they already know. What about letting both coexist peacefully? Axel Am 05.11.2011 14:29, schrieb Andres Taylor: On Nov 5, 2011 1:51 PM, Jim Webberj...@neotechnology.com wrote: I really don't want Cypher to pander to SQL. Cypher is about graph matching and should be awesome at it PQL isn't any different in this aspect. Mattias' ascii-art is still the way to describe your pattern. Cypher is already very like SQL in many ways - PQL is a way to acknowledge these similarities and turn them into a selling point instead. Andrés ___ 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 -- Javier de la Rosa http://versae.es ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] 1.5.M02 - JVM BootStrapper Issues
Indeed, they all JVM switches. Sent from my iPhone On 05/11/2011, at 5:34 PM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Romiko, this is probably linked to the same issue, https://github.com/neo4j/packaging/issues/2 Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - NOSQL for the Enterprise. http://startupbootcamp.org/- Öresund - Innovation happens HERE. On Thu, Nov 3, 2011 at 4:07 PM, Romiko Derbynew romiko.derby...@readify.net wrote: Hi Guys, I have downloaded the latest Community edition and notice these three custom lines of code causing the Neo4J server not to start up: wrapper.java.additional.1=-d64 wrapper.java.additional.1=-server wrapper.java.additional.1=-Xss2048k With the previous version, they worked fine. They live at the bottom of the neo4j-wrapper.conf Error I get is. java.lang.IllegalArgumentException at java.lang.ProcessImpl.init(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at org.neo4j.wrapper.ServerProcessConsole.doStart(ServerProcessConsole.j ava:39) at org.neo4j.wrapper.ServerProcess.init(ServerProcess.java:116) at org.neo4j.wrapper.ServerProcessConsole.init(ServerProcessConsole.ja va:29) at org.neo4j.wrapper.NeoServiceWrapper.launchAsConsoleApp(NeoServiceWrap per.java:48) at org.neo4j.wrapper.NeoServiceWrapper.main(NeoServiceWrapper.java:35) Is this expected, since I am sure the JVM should support adding these additional parameters? I want these in here, so I can always ensure it is 64bit, server mode with a stack size of 2048k ___ 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