[ https://issues.apache.org/jira/browse/TINKERPOP-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290951#comment-15290951 ]
ASF GitHub Bot commented on TINKERPOP-1035: ------------------------------------------- GitHub user okram opened a pull request: https://github.com/apache/incubator-tinkerpop/pull/316 TINKERPOP-1035: HALTED_TRAVERSERS hold wrong information https://issues.apache.org/jira/browse/TINKERPOP-1305 @dkuppitz found a severe bug in 3.2.0 in OLAP traversal chains. Interestingly enough, all the test cases we had didn't touch this problem (even though they did tangentially, but didn't test particular expectations). As such, two new tests have been added to `pageRank()` and `peerPressure()` which demonstrate the problem has been rectified. CHANGELOG ``` * Fixed a severe bug around halted traversers in a multi-job OLAP traversal chain. * Ensure a separation of `GraphComputer` and `VertexProgram` configurations in `SparkGraphComputer` and `GiraphGraphComputer`. * `PeerPressureVertexProgram` now supports dynamic initial vote strength calculations. * Added `EmptyMemory` for ease of use when no memory exists. * Updated `VertexComputing.generateProgram()` API to include `Memory` (*breaking*). ``` UPGRADE ``` VertexComputing API Change +++++++++++++++++++++++ The `VertexComputing` API is used by steps that wrap a `VertexProgram`. There is a method called `VertexComputing.generateProgram()` that has changed which now takes a second argument of `Memory`. To upgrade, simply fix the method signature of your `VertexComputing` implementations. The `Memory` argument can be safely ignored to effect the exact same semantics as prior. However, now previous OLAP job `Memory` can be leveraged when constructing the next `VertexProgram` in an OLAP traversal chain. ``` `mvn clean install` PASSED, integration tests PASSED, and docs built GOOD. ``` [INFO] Apache TinkerPop .................................. SUCCESS [4.477s] [INFO] Apache TinkerPop :: Gremlin Shaded ................ SUCCESS [2.256s] [INFO] Apache TinkerPop :: Gremlin Core .................. SUCCESS [38.899s] [INFO] Apache TinkerPop :: Gremlin Test .................. SUCCESS [11.399s] [INFO] Apache TinkerPop :: Gremlin Groovy ................ SUCCESS [38.721s] [INFO] Apache TinkerPop :: Gremlin Groovy Test ........... SUCCESS [6.730s] [INFO] Apache TinkerPop :: TinkerGraph Gremlin ........... SUCCESS [3:15.097s] [INFO] Apache TinkerPop :: Gremlin Benchmark ............. SUCCESS [5.194s] [INFO] Apache TinkerPop :: Hadoop Gremlin ................ SUCCESS [10:57.415s] [INFO] Apache TinkerPop :: Spark Gremlin ................. SUCCESS [6:28.472s] [INFO] Apache TinkerPop :: Giraph Gremlin ................ SUCCESS [2:47:11.903s] [INFO] Apache TinkerPop :: Neo4j Gremlin ................. SUCCESS [1:08:16.166s] [INFO] Apache TinkerPop :: Gremlin Driver ................ SUCCESS [8.704s] [INFO] Apache TinkerPop :: Gremlin Server ................ SUCCESS [13:13.317s] [INFO] Apache TinkerPop :: Gremlin Console ............... SUCCESS [1:23.504s] [INFO] Apache TinkerPop :: Gremlin Archetype ............. SUCCESS [0.134s] [INFO] Apache TinkerPop :: Archetype - TinkerGraph ....... SUCCESS [7.257s] [INFO] Apache TinkerPop :: Archetype - Server ............ SUCCESS [11.883s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4:33:02.004s [INFO] Finished at: Thu May 19 00:09:24 MDT 2016 [INFO] Final Memory: 99M/712M [INFO] ------------------------------------------------------------------------ ``` VOTE +1. You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/incubator-tinkerpop TINKERPOP-1305 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-tinkerpop/pull/316.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #316 ---- commit 4ee302899da37a0ad0ebab6bc4954ed39b69d6d9 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-18T22:15:40Z fixed HALTED_TRAVERSER bug where traversers were not at their 'resting location'. This only shows up in multi-OLAP job chains. HALTED_TRAVERESERS (master travesal) are now propagated via Configuration and NOT via sideEffects. This is more elegant and there are now helper methods in TraversalVertexProgram to make getting master halted traversers easy. Updated the-travesal.asciidoc to reflect how to use ProgramStep with it. Had to change a method signature in VertexComputing to account for this... its slight (breaking), but no one is using this right now, I'm sure of it. And if they are, the chaneg is trivial, just add a new argument to a method signature and ignore it to make it be like how it is in 3.2.0. ImmutablePath.TailPath was not serializable and this caused issues for HALTED_TRAVERSERS as well. Everything else fixed up. commit 07e12995ae6bed0a3b1da3942bc54371d94a66a9 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-18T23:02:22Z TraverserExecutor is smart to not do another iteration if the traversers will simply be returned to the master traversals as output. Updated the PageRankTest with a better test. commit a6aacdc51eba895e04f9d75d64343470fbaca5c5 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-18T23:11:26Z minor tweaks to TraverserVertexProgram to make it more efficient. commit 7d29ef32a42b143f9654457a46ab64a57446ef14 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-18T23:12:40Z minor tweaks to TraverserVertexProgram to make it more efficient. commit 6107ff95e47129d6266a68410c01c17b04af95cf Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-19T01:24:57Z made a PageRank test a bit more robust. running full integration over night. commit b100f033e02ee5647dd31b2d556a1dcadac29818 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-19T01:36:18Z added EmptyMemory and its used as the memory for the first generateProgram() of an OLAP chain. Much better than Optional(Memory). commit 5bcf0b01c7bfc77e9eea8fdb7b2c4c54a4fc0000 Author: Marko A. Rodriguez <okramma...@gmail.com> Date: 2016-05-19T11:23:36Z added traversal-based vote strength test to PeerPressureTest. Cleaned up internal classes of TraversalVertexProgram a bit for better organization. Generalized Phase enum so it can be used by other computer-based classes. added comments to TraveralVertexProgram. ---- > Better Consistency in Gremlin Server Transaction Management > ------------------------------------------------------------ > > Key: TINKERPOP-1035 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1035 > Project: TinkerPop > Issue Type: Improvement > Components: server > Affects Versions: 3.1.0-incubating > Reporter: stephen mallette > Assignee: stephen mallette > Fix For: 3.1.1-incubating > > > For sessionless requests to gremlin server, transactions management needs to > be tightened such that serialization occurs in the same thread of execution > as iteration. This should ensure proper operation across different graphs > providers (as some are more strict that others when it comes to > transactions). It will also ensure that "extra" transactions are not > required to gather data for serialization purposes which should make requests > more efficient. Also, transaction management needs to better ensure that the > commit of a successful request is complete before the client receives the > final streamed message (seems like it was possible for a race condition there) -- This message was sent by Atlassian JIRA (v6.3.4#6332)