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.
