Yes, shutdown commits transaction, the transaction is tied to a graph 
instance and graph instance to current thread. You can't span tx across 
multiple graph instances or threads (for example multiple requests)

Dne středa 30. září 2015 20:30:12 UTC+2 Tai Hu napsal(a):
>
> Jan,
>      I figured out what the the problem is. It is because during the 
> delete, I also do a lot of lookup to find related vertices to delete. For 
> those lookup, I called GraphFactory().getGraph() to have a new graph 
> instance from the pool and at the end of lookup, I called g.shutdown() to 
> return it to the pool. It seems that that g.shutdown() commits all 
> transaction.
>
> Tai
>
> On Wednesday, September 30, 2015 at 1:52:36 PM UTC-4, Jan Plaček wrote:
>>
>> You have to start each transaction even the nested ones ... when you 
>> start a transaction by begin() and there is already a running transaction, 
>> than begin() will just increment that counter. Similary when you call 
>> commit() the counter is decremented and actual commit is performed only 
>> when the counter is zero (this means this is the outermost commit). This is 
>> how TX keeps track of nested transaction to make propagation work. The 
>> number of begin() calls have to be the same as the number of commit() calls.
>>
>> Dne středa 30. září 2015 19:41:07 UTC+2 Tai Hu napsal(a):
>>>
>>> I just tried to dump out that number in each my delete method. It turns 
>>> out this number is always 0. What does that mean? I only called begin() 
>>> once in the top level method never called it again in each delete method.
>>>
>>> Thanks,
>>>
>>> Tai
>>>
>>> On Wednesday, September 30, 2015 at 12:15:19 PM UTC-4, Jan Plaček wrote:
>>>>
>>>> Try to dump following in your methods:
>>>>
>>>> graph.getRawGraph().getTransaction().amountOfNestedTxs();
>>>>
>>>> I checked the tx implementation, and commit is not triggered when this 
>>>> number is not 0:
>>>>
>>>>
>>>> https://github.com/orientechnologies/orientdb/blob/16cffc1b9ac9553f4ec4b1af8caa6a41a0322697/core/src/main/java/com/orientechnologies/orient/core/tx/OTransactionOptimistic.java
>>>>
>>>> Maybe retarded question, but just to be sure, do you also call begin() 
>>>> in deleteChild(g) and deleteParent(g) ?
>>>>
>>>> Dne úterý 29. září 2015 20:59:52 UTC+2 Tai Hu napsal(a):
>>>>>
>>>>> I have a question regarding to transaction propagation. For my data 
>>>>> model, I have bunch of delete methods to delete each individual type of 
>>>>> vertex in OrientDB. However, I also have a big delete method which 
>>>>> suppose 
>>>>> to delete all types of object at once. This operation need to be ACID, 
>>>>> either delete all of them or not at all. I created one OrientGraph object 
>>>>> and pass it into all each individual methods. However, after each delete 
>>>>> method, the operation is automatically commit. So if my big delete method 
>>>>> failed half way, my OrientDB will be out of sync. I tried to call 
>>>>> setAutoStartTx(false) on OrientGraph and manually called begin() method 
>>>>> on 
>>>>> OrientGraph, but transaction still automatically committed after each 
>>>>> delete method. Is there any way to manually control my transaction in 
>>>>> OrientGraph?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Tai
>>>>>
>>>>

-- 

--- 
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