Hi Xander,
In OrientDB 1.7 the OrientGraph instance could be used across threads, but
starting from 2.0 each object must be used on own thread.

Lvc@


On 27 October 2014 17:16, Andrey Lomakin <[email protected]> wrote:

> Hi Xander,
> You should consider TransactionalGraph graph instance as connection and
> this connection should be thread local.
> But you have shared connection.
>
> On Mon, Oct 27, 2014 at 5:53 PM, Xander Uiterlinden <
> [email protected]> wrote:
>
>> Hi,
>>
>> I've been working on upgrading our graph code from OrientDB 1.7 to
>> OrientDB 2.0M2. Since we're using the blueprints API's this was quite easy,
>> however I noticed a difference regarding transactions with the new OrientDB
>> version.
>>
>> Using the TransactionalGraph API a transaction is supposed to be bound to
>> a thread, so commit() and rollback() invocations on different threads
>> should not have effect on each other. This appears not to be the case with
>> the new version.
>>
>> See the following code:
>>
>> final TransactionalGraph graph = m_graph.getGraph();
>>
>> Runnable r1 = new Runnable() {
>>
>>     @Override
>>     public void run() {
>>         Vertex vertex = graph.addVertex(null);
>>         System.out.println("add v1");
>>         vertex.setProperty("name", "v1");
>>         vertex.setProperty("category", "v");
>> // delay the commit to check whether the rollback on the other thread has
>> any effect on what we're doing here
>>         try {
>> Thread.sleep(1000);
>> } catch (InterruptedException e) {
>> }
>>         System.out.println("graph commit");
>>         graph.commit();
>>     }
>>
>> };
>>
>> // Thread 2 appears to roll-back the work that was done but not yet
>> committed in thread 1.
>> Runnable r2 = new Runnable() {
>>
>>     @Override
>>     public void run() {
>>         try {
>> Thread.sleep(500);
>> } catch (InterruptedException e) {
>> }
>>         System.out.println("graph rollback");
>>     graph.rollback();
>>     }
>> };
>>
>> new Thread(r1).start();
>> new Thread(r2).start();
>>
>> try {
>>     Thread.sleep(1500);
>> }
>> catch (InterruptedException e) {
>> }
>> System.out.println("wake and check");
>> Iterable<Vertex> vertices = graph.getVertices("category", "v");
>> long count = StreamSupport.stream(vertices.spliterator(), false).count();
>> assertEquals(1, count);
>>
>> To me this seems like a bug, or am I overlooking something ?
>>
>> Thanks,
>>
>> Xander
>>
>> --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Best regards,
> Andrey Lomakin.
>
> Orient Technologies
> the Company behind OrientDB
>
>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to