Hi all,

I'm happy to announce that the transactional PR is ready for review
https://github.com/apache/tinkerpop/pull/2087.
I'm still planning a couple of small changes, but nothing big.

Regards, Valentyn


On Thu, Jun 15, 2023 at 10:18 PM Valentyn Kahamlyk <
valent...@bitquilltech.com> wrote:

> Hi all,
>
> I'm working on transactions implementation and I would like to discuss 
> testing of this feature.
>
> Currently available options for tests in TinkerPop:
> 1. Unit tests.
> For development I wrote bunch of unit tests for the newly introduced 
> TinkerTransactionGraph because they are easier to make and much more 
> convenient to debug. However, these tests are very complicated to be reused 
> by other providers.
> 2. Gherkin tests.
> This is the best option for providers to test some features. However, the 
> current implementation does not support many of the abilities needed to test 
> transactions, for example multi-step tests and multi-threaded tests. The 
> ideal solution would be to add such features, but unfortunately it takes a 
> lot of time and effort.
> For basic checks of TinkerTransactionGraph existing Gherkin tests are already 
> used.
> 3. Integration tests.
> We have 2 kinds of integration tests in `gremlin-test`
> a) process tests are mirror of Gherkin tests with some small differences.
> b) structure tests are probably the best candidate to use for 
> TinkerTransactionGraph. There is already a set of tests for transactions in 
> TransactionTest and I can add more cases there. These tests will be used in a 
> similar way to TinkerGraphStructureStandardTest.
> 4. Gremlin Server tests.
> I think these tests have a different responsibility.
> 5. GLV tests.
> All GLV's already have transaction tests and we can extend them to use 
> TinkerTransactionGraph at server-side.
>
> To summarize I suggest using structure tests to verify transaction 
> implementation.
>
> Regards, Valentyn
>
>
> On Wed, May 10, 2023 at 2:59 PM Valentyn Kahamlyk <
> valent...@bitquilltech.com> wrote:
>
>> Hi all,
>>
>> I opened PR with a detailed proposal for transaction implementation:
>> https://github.com/apache/tinkerpop/pull/2054.
>>
>> Regards, Valentyn
>>
>> On Mon, Feb 27, 2023 at 1:22 PM Valentyn Kahamlyk <
>> valent...@bitquilltech.com> wrote:
>>
>>> Hi all,
>>>
>>> Now, if you need to use transactions in tinkerpop, the only solution is
>>> to use the Neo4J plugin. Unfortunately, this plugin has not been updated
>>> for a long time and is only compatible with Neo4J version 3.4, which
>>> reached end of life in March, 2020.
>>>
>>> I propose to implement native transaction support in TinkerGraph.
>>>
>>> The most interesting question to discuss is the level of isolation in
>>> SQL 92 terms. There are 5 options to choose from: `Read uncommitted`, `Read
>>> committed`, `Repeatable read`, `Snapshot` and `Serializable`.
>>>
>>> In terms of balancing complexity of implementation and functionality, I
>>> think the most optimal option is `Read committed` or `Repeatable read`.
>>>
>>> I hope to implement `Read committed`, it is enough to add versions to
>>> the Vertices and Edges, add list of updated Elements in Graph.
>>> Write lock can be Vertex-level and Edge-level.
>>>
>>> Regards, Valentyn
>>>
>>

Reply via email to