Re: mutation visibility semantics

2017-06-13 Thread Stephen Mallette
I don't think that there is a test that enforces your test() so I don't
think that should pass. We only incidentally (and accidentally) test that
in this EventStrategyProcessTest.  Please OptOut of that test for now. We
can get it corrected for next release.

On Tue, Jun 13, 2017 at 6:35 AM, pieter gmail 
wrote:

> Hi,
>
> Testing Sqlg on 3.2.5 I am getting failures EventStrategyProcessTest.shoul
> dDetachVertexPropertyWhenRemoved
>
> final GraphTraversalSource gts = create(eventStrategy);
>
> gts.V(v).properties("to-remove").drop().iterate();
> tryCommit(graph);
>
> assertEquals(1, IteratorUtils.count(v.properties()));
>
> The code assumes that the v that is currently in memory will automatically
> be kept in sync.
>
> This is not my understanding of TinkerPop's semantics.
> The v object was not itself updated. So I expect for the assertion to
> first re-fetch before asserting.
>
> Here is a simpler test to illustrate the issue.
>
> @Test
> public void test() {
> Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name",
> "John");
> this.sqlgGraph.tx().commit();
>
> Vertex a1Again = this.sqlgGraph.traversal().V(a1).next();
> a1Again.property("name", "Peter");
> this.sqlgGraph.tx().commit();
>
> //This fails, TinkerPop does not specify transaction memory
> visibility
> Assert.assertEquals("Peter", a1.value("name"));
> }
>
> Am I correct in my understanding here, or is the test suppose to pass?
>
> Thanks
> Pieter
>


RE: mutation visibility semantics

2017-06-13 Thread pieter gmail

Hi,

Testing Sqlg on 3.2.5 I am getting failures 
EventStrategyProcessTest.shouldDetachVertexPropertyWhenRemoved


final GraphTraversalSource gts = create(eventStrategy);

gts.V(v).properties("to-remove").drop().iterate();
tryCommit(graph);

assertEquals(1, IteratorUtils.count(v.properties()));

The code assumes that the v that is currently in memory will 
automatically be kept in sync.


This is not my understanding of TinkerPop's semantics.
The v object was not itself updated. So I expect for the assertion to 
first re-fetch before asserting.


Here is a simpler test to illustrate the issue.

@Test
public void test() {
Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "John");
this.sqlgGraph.tx().commit();

Vertex a1Again = this.sqlgGraph.traversal().V(a1).next();
a1Again.property("name", "Peter");
this.sqlgGraph.tx().commit();

//This fails, TinkerPop does not specify transaction memory 
visibility

Assert.assertEquals("Peter", a1.value("name"));
}

Am I correct in my understanding here, or is the test suppose to pass?

Thanks
Pieter