is delegator.storeAll() always committed?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

is delegator.storeAll() always committed?

Marc von der Brüggen
Hello,

does delegator.storeAll(listOfGenericValues) always perform a commit?

I want to make sure the data is committed, but if I do the following:

delegator.storeAll(listOfGenericValues);
TransactionUtil.commit();

I receive a warning:
[java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not committing
transaction, status is No Transaction (6)


Thank you very much!


Kind regards
Marc


smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Malin Nicolas
Do you open a transaction before ?

TransactionUtil.begin();
delegator.storeAll(listOfGenericValues);
TransactionUtil.commit();

Nicolas

Le 10/07/2014 11:18, Marc von der Brüggen a écrit :

> Hello,
>
> does delegator.storeAll(listOfGenericValues) always perform a commit?
>
> I want to make sure the data is committed, but if I do the following:
>
> delegator.storeAll(listOfGenericValues);
> TransactionUtil.commit();
>
> I receive a warning:
> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
> committing transaction, status is No Transaction (6)
>
>
> Thank you very much!
>
>
> Kind regards
> Marc
>

Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Marc von der Brüggen
Hi Nicolas,

I didn't set use-transaction="false", so that the service can handle the
transactions by itself.

Before I tried

delegator.storeAll(listOfGenericValues);
TransactionUtil.commit();

it looked like this:

boolean transactionBegan = TransactionUtil.begin();
delegator.storeAll(listOfGenericValues);
TransactionUtil.commit(transactionBegan );

However, transactionBegan was always false.


Kind regards
Marc



Am 10.07.2014 11:59, schrieb Nicolas Malin:

> Do you open a transaction before ?
>
> TransactionUtil.begin();
> delegator.storeAll(listOfGenericValues);
> TransactionUtil.commit();
>
> Nicolas
>
> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>> Hello,
>>
>> does delegator.storeAll(listOfGenericValues) always perform a commit?
>>
>> I want to make sure the data is committed, but if I do the following:
>>
>> delegator.storeAll(listOfGenericValues);
>> TransactionUtil.commit();
>>
>> I receive a warning:
>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>> committing transaction, status is No Transaction (6)
>>
>>
>> Thank you very much!
>>
>>
>> Kind regards
>> Marc
>>
>

--
Marc von der Brüggen
Software-Entwickler
   
ZYRES digital media systems GmbH
Stuttgarter Straße 25 60329 Frankfurt am Main
Phone +49 (0)69 98 55 99 - 23
Fax   +49 (0)69 98 55 99 - 11

Firmensitz: Stuttgarter Straße 25 60329 Frankfurt am Main
Registergericht: Amtsgericht Frankfurt am Main, HRB 76374
Geschäftsführer: Sebastian Schirmer

http://www.zyres.com/



smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Malin Nicolas
Ok I understand.

If you run a commit in your code at the service end, the transaction has
been already commited

So, open a new transaction like this  :

Transaction transaction = null;
         try {
             transaction = TransactionUtil.suspend();
             boolean transactionBegan = TransactionUtil.begin();
             delegator.storeAll(listOfGenericValues);
             TransactionUtil.commit(transactionBegan );
             TransactionUtil.resume(transaction);
         } catch (YourExceptionLevel e) {
             Debug.logError(e, module);
             TransactionUtil.rollback();
             TransactionUtil.resume(transaction);
         }


Le 10/07/2014 14:59, Marc von der Brüggen a écrit :

> Hi Nicolas,
>
> I didn't set use-transaction="false", so that the service can handle
> the transactions by itself.
>
> Before I tried
>
> delegator.storeAll(listOfGenericValues);
> TransactionUtil.commit();
>
> it looked like this:
>
> boolean transactionBegan = TransactionUtil.begin();
> delegator.storeAll(listOfGenericValues);
> TransactionUtil.commit(transactionBegan );
>
> However, transactionBegan was always false.
>
>
> Kind regards
> Marc
>
>
>
> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>> Do you open a transaction before ?
>>
>> TransactionUtil.begin();
>> delegator.storeAll(listOfGenericValues);
>> TransactionUtil.commit();
>>
>> Nicolas
>>
>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>> Hello,
>>>
>>> does delegator.storeAll(listOfGenericValues) always perform a commit?
>>>
>>> I want to make sure the data is committed, but if I do the following:
>>>
>>> delegator.storeAll(listOfGenericValues);
>>> TransactionUtil.commit();
>>>
>>> I receive a warning:
>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>> committing transaction, status is No Transaction (6)
>>>
>>>
>>> Thank you very much!
>>>
>>>
>>> Kind regards
>>> Marc
>>>
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Marc von der Brüggen
Hello Nicolas,

thank you very much for your help.

I tried it:

         Debug.logVerbose("### Store List Prices
("+productPrices.size()+") ###", MODULE);
         Transaction transaction = null;
         transaction = TransactionUtil.suspend();
         boolean transactionBegan = TransactionUtil.begin();
         delegator.storeAll(productPrices);
         TransactionUtil.commit(transactionBegan);
         TransactionUtil.resume(transaction);
         TransactionUtil.commit();
         Debug.logVerbose("### List Prices Stored
("+productPrices.size()+") ###", MODULE);

but the output is still the same:

      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
OfbizPriceImporter.java:688:DEBUG] ### Store List Prices (1234) ###
      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [    
TransactionUtil.java:348:WARN ] No transaction in place, so not suspending.
      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [    
TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not committing
transaction, status is No Transaction (6)
      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
OfbizPriceImporter.java:696:DEBUG] ### List Prices Stored (1234) ###


Kind regards
Marc


Am 10.07.2014 15:12, schrieb Nicolas Malin:

> Ok I understand.
>
> If you run a commit in your code at the service end, the transaction
> has been already commited
>
> So, open a new transaction like this  :
>
> Transaction transaction = null;
>         try {
>             transaction = TransactionUtil.suspend();
>             boolean transactionBegan = TransactionUtil.begin();
>             delegator.storeAll(listOfGenericValues);
>             TransactionUtil.commit(transactionBegan );
>             TransactionUtil.resume(transaction);
>         } catch (YourExceptionLevel e) {
>             Debug.logError(e, module);
>             TransactionUtil.rollback();
>             TransactionUtil.resume(transaction);
>         }
>
>
> Le 10/07/2014 14:59, Marc von der Brüggen a écrit :
>> Hi Nicolas,
>>
>> I didn't set use-transaction="false", so that the service can handle
>> the transactions by itself.
>>
>> Before I tried
>>
>> delegator.storeAll(listOfGenericValues);
>> TransactionUtil.commit();
>>
>> it looked like this:
>>
>> boolean transactionBegan = TransactionUtil.begin();
>> delegator.storeAll(listOfGenericValues);
>> TransactionUtil.commit(transactionBegan );
>>
>> However, transactionBegan was always false.
>>
>>
>> Kind regards
>> Marc
>>
>>
>>
>> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>>> Do you open a transaction before ?
>>>
>>> TransactionUtil.begin();
>>> delegator.storeAll(listOfGenericValues);
>>> TransactionUtil.commit();
>>>
>>> Nicolas
>>>
>>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>>> Hello,
>>>>
>>>> does delegator.storeAll(listOfGenericValues) always perform a commit?
>>>>
>>>> I want to make sure the data is committed, but if I do the following:
>>>>
>>>> delegator.storeAll(listOfGenericValues);
>>>> TransactionUtil.commit();
>>>>
>>>> I receive a warning:
>>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>>> committing transaction, status is No Transaction (6)
>>>>
>>>>
>>>> Thank you very much!
>>>>
>>>>
>>>> Kind regards
>>>> Marc
>>>>
>>>
>>
>>
>

--
Marc von der Brüggen
Software-Entwickler
   
ZYRES digital media systems GmbH
Stuttgarter Straße 25 60329 Frankfurt am Main
Phone +49 (0)69 98 55 99 - 23
Fax   +49 (0)69 98 55 99 - 11

Firmensitz: Stuttgarter Straße 25 60329 Frankfurt am Main
Registergericht: Amtsgericht Frankfurt am Main, HRB 76374
Geschäftsführer: Sebastian Schirmer

http://www.zyres.com/



smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Malin Nicolas
Hi,

Le 15/07/2014 10:12, Marc von der Brüggen a écrit :

> Hello Nicolas,
>
> thank you very much for your help.
>
> I tried it:
>
>         Debug.logVerbose("### Store List Prices
> ("+productPrices.size()+") ###", MODULE);
>         Transaction transaction = null;
>         transaction = TransactionUtil.suspend();
>         boolean transactionBegan = TransactionUtil.begin();
>         delegator.storeAll(productPrices);
>         TransactionUtil.commit(transactionBegan);
>         TransactionUtil.resume(transaction);
>         TransactionUtil.commit();
>         Debug.logVerbose("### List Prices Stored
> ("+productPrices.size()+") ###", MODULE);
>
> but the output is still the same:
>
>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
> OfbizPriceImporter.java:688:DEBUG] ### Store List Prices (1234) ###
>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [    
> TransactionUtil.java:348:WARN ] No transaction in place, so not
> suspending.
I'm really surprising on that ! If you haven't transaction available,
your service don't open a transaction or you have disable on the entity
engine your transaction manager.
In this case just :

         boolean transactionBegan = TransactionUtil.begin();
         delegator.storeAll(productPrices);
         TransactionUtil.commit();

works.

> [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
> committing transaction, status is No Transaction (6)
>      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
> OfbizPriceImporter.java:696:DEBUG] ### List Prices Stored (1234) ###
>
>
> Kind regards
> Marc
>
>
> Am 10.07.2014 15:12, schrieb Nicolas Malin:
>> Ok I understand.
>>
>> If you run a commit in your code at the service end, the transaction
>> has been already commited
>>
>> So, open a new transaction like this  :
>>
>> Transaction transaction = null;
>>         try {
>>             transaction = TransactionUtil.suspend();
>>             boolean transactionBegan = TransactionUtil.begin();
>>             delegator.storeAll(listOfGenericValues);
>>             TransactionUtil.commit(transactionBegan );
>>             TransactionUtil.resume(transaction);
>>         } catch (YourExceptionLevel e) {
>>             Debug.logError(e, module);
>>             TransactionUtil.rollback();
>>             TransactionUtil.resume(transaction);
>>         }
>>
>>
>> Le 10/07/2014 14:59, Marc von der Brüggen a écrit :
>>> Hi Nicolas,
>>>
>>> I didn't set use-transaction="false", so that the service can handle
>>> the transactions by itself.
>>>
>>> Before I tried
>>>
>>> delegator.storeAll(listOfGenericValues);
>>> TransactionUtil.commit();
>>>
>>> it looked like this:
>>>
>>> boolean transactionBegan = TransactionUtil.begin();
>>> delegator.storeAll(listOfGenericValues);
>>> TransactionUtil.commit(transactionBegan );
>>>
>>> However, transactionBegan was always false.
>>>
>>>
>>> Kind regards
>>> Marc
>>>
>>>
>>>
>>> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>>>> Do you open a transaction before ?
>>>>
>>>> TransactionUtil.begin();
>>>> delegator.storeAll(listOfGenericValues);
>>>> TransactionUtil.commit();
>>>>
>>>> Nicolas
>>>>
>>>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>>>> Hello,
>>>>>
>>>>> does delegator.storeAll(listOfGenericValues) always perform a commit?
>>>>>
>>>>> I want to make sure the data is committed, but if I do the following:
>>>>>
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit();
>>>>>
>>>>> I receive a warning:
>>>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>>>> committing transaction, status is No Transaction (6)
>>>>>
>>>>>
>>>>> Thank you very much!
>>>>>
>>>>>
>>>>> Kind regards
>>>>> Marc
>>>>>
>>>>
>>>
>>>
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Marc von der Brüggen
Hi,

I disabled the service's transaction

     use-transaction="false"

and handle it manually. It seems to be fine, now.

             boolean transactionBegan = TransactionUtil.begin();
             Debug.logVerbose("transactionBegan = "+transactionBegan,
MODULE);
             delegator.removeByCondition("TableA", completeCondition);
             TransactionUtil.commit(transactionBegan);
             Debug.logVerbose("transactionBegan = "+transactionBegan,
MODULE);
             Debug.logVerbose("Deleting from tableA", MODULE);

             transactionBegan = TransactionUtil.begin();
             delegator.removeByCondition("TableB", completeCondition);
             TransactionUtil.commit(transactionBegan);
             Debug.logVerbose("Deleting from tableB", MODULE);

My output is:
transactionBegan = true
transactionBegan = true
Deleting from tableA
Deleting from tableB

Do I have to close the transaction after a commit and what is the
correct way?
Call TransactionUtil.suspend() and
TransactionUtil.cleanSuspendedTransactions()?

Thank you very much!


Kind regards
Marc



Am 15.07.2014 11:51, schrieb Nicolas Malin:

> Hi,
>
> Le 15/07/2014 10:12, Marc von der Brüggen a écrit :
>> Hello Nicolas,
>>
>> thank you very much for your help.
>>
>> I tried it:
>>
>>         Debug.logVerbose("### Store List Prices
>> ("+productPrices.size()+") ###", MODULE);
>>         Transaction transaction = null;
>>         transaction = TransactionUtil.suspend();
>>         boolean transactionBegan = TransactionUtil.begin();
>>         delegator.storeAll(productPrices);
>>         TransactionUtil.commit(transactionBegan);
>>         TransactionUtil.resume(transaction);
>>         TransactionUtil.commit();
>>         Debug.logVerbose("### List Prices Stored
>> ("+productPrices.size()+") ###", MODULE);
>>
>> but the output is still the same:
>>
>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
>> OfbizPriceImporter.java:688:DEBUG] ### Store List Prices (1234) ###
>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [    
>> TransactionUtil.java:348:WARN ] No transaction in place, so not
>> suspending.
> I'm really surprising on that ! If you haven't transaction available,
> your service don't open a transaction or you have disable on the
> entity engine your transaction manager.
> In this case just :
>
>         boolean transactionBegan = TransactionUtil.begin();
>         delegator.storeAll(productPrices);
>         TransactionUtil.commit();
>
> works.
>> [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>> committing transaction, status is No Transaction (6)
>>      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>> OfbizPriceImporter.java:696:DEBUG] ### List Prices Stored (1234) ###
>>
>>
>> Kind regards
>> Marc
>>
>>
>> Am 10.07.2014 15:12, schrieb Nicolas Malin:
>>> Ok I understand.
>>>
>>> If you run a commit in your code at the service end, the transaction
>>> has been already commited
>>>
>>> So, open a new transaction like this  :
>>>
>>> Transaction transaction = null;
>>>         try {
>>>             transaction = TransactionUtil.suspend();
>>>             boolean transactionBegan = TransactionUtil.begin();
>>>             delegator.storeAll(listOfGenericValues);
>>>             TransactionUtil.commit(transactionBegan );
>>>             TransactionUtil.resume(transaction);
>>>         } catch (YourExceptionLevel e) {
>>>             Debug.logError(e, module);
>>>             TransactionUtil.rollback();
>>>             TransactionUtil.resume(transaction);
>>>         }
>>>
>>>
>>> Le 10/07/2014 14:59, Marc von der Brüggen a écrit :
>>>> Hi Nicolas,
>>>>
>>>> I didn't set use-transaction="false", so that the service can
>>>> handle the transactions by itself.
>>>>
>>>> Before I tried
>>>>
>>>> delegator.storeAll(listOfGenericValues);
>>>> TransactionUtil.commit();
>>>>
>>>> it looked like this:
>>>>
>>>> boolean transactionBegan = TransactionUtil.begin();
>>>> delegator.storeAll(listOfGenericValues);
>>>> TransactionUtil.commit(transactionBegan );
>>>>
>>>> However, transactionBegan was always false.
>>>>
>>>>
>>>> Kind regards
>>>> Marc
>>>>
>>>>
>>>>
>>>> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>>>>> Do you open a transaction before ?
>>>>>
>>>>> TransactionUtil.begin();
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit();
>>>>>
>>>>> Nicolas
>>>>>
>>>>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>>>>> Hello,
>>>>>>
>>>>>> does delegator.storeAll(listOfGenericValues) always perform a
>>>>>> commit?
>>>>>>
>>>>>> I want to make sure the data is committed, but if I do the
>>>>>> following:
>>>>>>
>>>>>> delegator.storeAll(listOfGenericValues);
>>>>>> TransactionUtil.commit();
>>>>>>
>>>>>> I receive a warning:
>>>>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>>>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>>>>> committing transaction, status is No Transaction (6)
>>>>>>
>>>>>>
>>>>>> Thank you very much!
>>>>>>
>>>>>>
>>>>>> Kind regards
>>>>>> Marc
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>

--
Marc von der Brüggen
Software-Entwickler
   
ZYRES digital media systems GmbH
Stuttgarter Straße 25 60329 Frankfurt am Main
Phone +49 (0)69 98 55 99 - 23
Fax   +49 (0)69 98 55 99 - 11

Firmensitz: Stuttgarter Straße 25 60329 Frankfurt am Main
Registergericht: Amtsgericht Frankfurt am Main, HRB 76374
Geschäftsführer: Sebastian Schirmer

http://www.zyres.com/



smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Adrian Crum-3
Be very careful when writing your own transaction handling code! There
are a lot of things that can go wrong and you can end up with
unpredictable results. That is why the framework handles those details
for you.

No, you do not "close" a transaction. You either commit it or roll it back.


Adrian Crum
Sandglass Software
www.sandglass-software.com

On 7/21/2014 1:34 PM, Marc von der Brüggen wrote:

> Hi,
>
> I disabled the service's transaction
>
>      use-transaction="false"
>
> and handle it manually. It seems to be fine, now.
>
>              boolean transactionBegan = TransactionUtil.begin();
>              Debug.logVerbose("transactionBegan = "+transactionBegan,
> MODULE);
>              delegator.removeByCondition("TableA", completeCondition);
>              TransactionUtil.commit(transactionBegan);
>              Debug.logVerbose("transactionBegan = "+transactionBegan,
> MODULE);
>              Debug.logVerbose("Deleting from tableA", MODULE);
>
>              transactionBegan = TransactionUtil.begin();
>              delegator.removeByCondition("TableB", completeCondition);
>              TransactionUtil.commit(transactionBegan);
>              Debug.logVerbose("Deleting from tableB", MODULE);
>
> My output is:
> transactionBegan = true
> transactionBegan = true
> Deleting from tableA
> Deleting from tableB
>
> Do I have to close the transaction after a commit and what is the
> correct way?
> Call TransactionUtil.suspend() and
> TransactionUtil.cleanSuspendedTransactions()?
>
> Thank you very much!
>
>
> Kind regards
> Marc
>
>
>
> Am 15.07.2014 11:51, schrieb Nicolas Malin:
>> Hi,
>>
>> Le 15/07/2014 10:12, Marc von der Brüggen a écrit :
>>> Hello Nicolas,
>>>
>>> thank you very much for your help.
>>>
>>> I tried it:
>>>
>>>         Debug.logVerbose("### Store List Prices
>>> ("+productPrices.size()+") ###", MODULE);
>>>         Transaction transaction = null;
>>>         transaction = TransactionUtil.suspend();
>>>         boolean transactionBegan = TransactionUtil.begin();
>>>         delegator.storeAll(productPrices);
>>>         TransactionUtil.commit(transactionBegan);
>>>         TransactionUtil.resume(transaction);
>>>         TransactionUtil.commit();
>>>         Debug.logVerbose("### List Prices Stored
>>> ("+productPrices.size()+") ###", MODULE);
>>>
>>> but the output is still the same:
>>>
>>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
>>> OfbizPriceImporter.java:688:DEBUG] ### Store List Prices (1234) ###
>>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
>>> TransactionUtil.java:348:WARN ] No transaction in place, so not
>>> suspending.
>> I'm really surprising on that ! If you haven't transaction available,
>> your service don't open a transaction or you have disable on the
>> entity engine your transaction manager.
>> In this case just :
>>
>>         boolean transactionBegan = TransactionUtil.begin();
>>         delegator.storeAll(productPrices);
>>         TransactionUtil.commit();
>>
>> works.
>>> [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>> committing transaction, status is No Transaction (6)
>>>      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>>> OfbizPriceImporter.java:696:DEBUG] ### List Prices Stored (1234) ###
>>>
>>>
>>> Kind regards
>>> Marc
>>>
>>>
>>> Am 10.07.2014 15:12, schrieb Nicolas Malin:
>>>> Ok I understand.
>>>>
>>>> If you run a commit in your code at the service end, the transaction
>>>> has been already commited
>>>>
>>>> So, open a new transaction like this  :
>>>>
>>>> Transaction transaction = null;
>>>>         try {
>>>>             transaction = TransactionUtil.suspend();
>>>>             boolean transactionBegan = TransactionUtil.begin();
>>>>             delegator.storeAll(listOfGenericValues);
>>>>             TransactionUtil.commit(transactionBegan );
>>>>             TransactionUtil.resume(transaction);
>>>>         } catch (YourExceptionLevel e) {
>>>>             Debug.logError(e, module);
>>>>             TransactionUtil.rollback();
>>>>             TransactionUtil.resume(transaction);
>>>>         }
>>>>
>>>>
>>>> Le 10/07/2014 14:59, Marc von der Brüggen a écrit :
>>>>> Hi Nicolas,
>>>>>
>>>>> I didn't set use-transaction="false", so that the service can
>>>>> handle the transactions by itself.
>>>>>
>>>>> Before I tried
>>>>>
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit();
>>>>>
>>>>> it looked like this:
>>>>>
>>>>> boolean transactionBegan = TransactionUtil.begin();
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit(transactionBegan );
>>>>>
>>>>> However, transactionBegan was always false.
>>>>>
>>>>>
>>>>> Kind regards
>>>>> Marc
>>>>>
>>>>>
>>>>>
>>>>> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>>>>>> Do you open a transaction before ?
>>>>>>
>>>>>> TransactionUtil.begin();
>>>>>> delegator.storeAll(listOfGenericValues);
>>>>>> TransactionUtil.commit();
>>>>>>
>>>>>> Nicolas
>>>>>>
>>>>>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>>>>>> Hello,
>>>>>>>
>>>>>>> does delegator.storeAll(listOfGenericValues) always perform a
>>>>>>> commit?
>>>>>>>
>>>>>>> I want to make sure the data is committed, but if I do the
>>>>>>> following:
>>>>>>>
>>>>>>> delegator.storeAll(listOfGenericValues);
>>>>>>> TransactionUtil.commit();
>>>>>>>
>>>>>>> I receive a warning:
>>>>>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>>>>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>>>>>> committing transaction, status is No Transaction (6)
>>>>>>>
>>>>>>>
>>>>>>> Thank you very much!
>>>>>>>
>>>>>>>
>>>>>>> Kind regards
>>>>>>> Marc
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: is delegator.storeAll() always committed?

Youssef Khaye
In reply to this post by Marc von der Brüggen
hi Marc,
here is this the definition of "use-trasaction"
<<
If set to true and there is no transaction already in place
  the Service Engine will begin one. If set to false or there is a
  transaction already in place the Service Engine will do
  nothing (this also means that if set to false and a
  transaction is already in place it will do nothing).
 >>
from that definition we are not sure that there is no transction for
current service.

what is the problème with your output ?
did u check table to see if record was realy deleted or not ?
I used to suspend a Tx (TransactionUtil.suspend() return current Tx if
there is one) and then call resume after my code.

       +  Transaction currentTx = TransactionUtil.suspend();
             boolean transactionBegan = TransactionUtil.begin();
             Debug.logVerbose("transactionBegan = "+transactionBegan,
MODULE);
             delegator.removeByCondition("TableA", completeCondition);
             TransactionUtil.commit(transactionBegan);
             Debug.logVerbose("transactionBegan = "+transactionBegan,
MODULE);
             Debug.logVerbose("Deleting from tableA", MODULE);

             transactionBegan = TransactionUtil.begin();
             delegator.removeByCondition("TableB", completeCondition);
             TransactionUtil.commit(transactionBegan);
             Debug.logVerbose("Deleting from tableB", MODULE);
     +     if(UtilValidate.isNotEMpty(currentTx))
     +           TransactionUtil.resume(currentTx);

Le 21/07/2014 14:34, Marc von der Brüggen a écrit :

> Hi,
>
> I disabled the service's transaction
>
>     use-transaction="false"
>
> and handle it manually. It seems to be fine, now.
>
>             boolean transactionBegan = TransactionUtil.begin();
>             Debug.logVerbose("transactionBegan = "+transactionBegan,
> MODULE);
>             delegator.removeByCondition("TableA", completeCondition);
>             TransactionUtil.commit(transactionBegan);
>             Debug.logVerbose("transactionBegan = "+transactionBegan,
> MODULE);
>             Debug.logVerbose("Deleting from tableA", MODULE);
>
>             transactionBegan = TransactionUtil.begin();
>             delegator.removeByCondition("TableB", completeCondition);
>             TransactionUtil.commit(transactionBegan);
>             Debug.logVerbose("Deleting from tableB", MODULE);
>
> My output is:
> transactionBegan = true
> transactionBegan = true
> Deleting from tableA
> Deleting from tableB
>
> Do I have to close the transaction after a commit and what is the
> correct way?
> Call TransactionUtil.suspend() and
> TransactionUtil.cleanSuspendedTransactions()?
>
> Thank you very much!
>
>
> Kind regards
> Marc
>
>
>
> Am 15.07.2014 11:51, schrieb Nicolas Malin:
>> Hi,
>>
>> Le 15/07/2014 10:12, Marc von der Brüggen a écrit :
>>> Hello Nicolas,
>>>
>>> thank you very much for your help.
>>>
>>> I tried it:
>>>
>>>         Debug.logVerbose("### Store List Prices
>>> ("+productPrices.size()+") ###", MODULE);
>>>         Transaction transaction = null;
>>>         transaction = TransactionUtil.suspend();
>>>         boolean transactionBegan = TransactionUtil.begin();
>>>         delegator.storeAll(productPrices);
>>>         TransactionUtil.commit(transactionBegan);
>>>         TransactionUtil.resume(transaction);
>>>         TransactionUtil.commit();
>>>         Debug.logVerbose("### List Prices Stored
>>> ("+productPrices.size()+") ###", MODULE);
>>>
>>> but the output is still the same:
>>>
>>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [
>>> OfbizPriceImporter.java:688:DEBUG] ### Store List Prices (1234) ###
>>>      [java] 2014-07-15 09:58:54,831 (default-invoker-Thread-6) [    
>>> TransactionUtil.java:348:WARN ] No transaction in place, so not
>>> suspending.
>> I'm really surprising on that ! If you haven't transaction available,
>> your service don't open a transaction or you have disable on the
>> entity engine your transaction manager.
>> In this case just :
>>
>>         boolean transactionBegan = TransactionUtil.begin();
>>         delegator.storeAll(productPrices);
>>         TransactionUtil.commit();
>>
>> works.
>>> [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>> committing transaction, status is No Transaction (6)
>>>      [java] 2014-07-15 09:58:55,990 (default-invoker-Thread-6) [
>>> OfbizPriceImporter.java:696:DEBUG] ### List Prices Stored (1234) ###
>>>
>>>
>>> Kind regards
>>> Marc
>>>
>>>
>>> Am 10.07.2014 15:12, schrieb Nicolas Malin:
>>>> Ok I understand.
>>>>
>>>> If you run a commit in your code at the service end, the
>>>> transaction has been already commited
>>>>
>>>> So, open a new transaction like this  :
>>>>
>>>> Transaction transaction = null;
>>>>         try {
>>>>             transaction = TransactionUtil.suspend();
>>>>             boolean transactionBegan = TransactionUtil.begin();
>>>>             delegator.storeAll(listOfGenericValues);
>>>>             TransactionUtil.commit(transactionBegan );
>>>>             TransactionUtil.resume(transaction);
>>>>         } catch (YourExceptionLevel e) {
>>>>             Debug.logError(e, module);
>>>>             TransactionUtil.rollback();
>>>>             TransactionUtil.resume(transaction);
>>>>         }
>>>>
>>>>
>>>> Le 10/07/2014 14:59, Marc von der Brüggen a écrit :
>>>>> Hi Nicolas,
>>>>>
>>>>> I didn't set use-transaction="false", so that the service can
>>>>> handle the transactions by itself.
>>>>>
>>>>> Before I tried
>>>>>
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit();
>>>>>
>>>>> it looked like this:
>>>>>
>>>>> boolean transactionBegan = TransactionUtil.begin();
>>>>> delegator.storeAll(listOfGenericValues);
>>>>> TransactionUtil.commit(transactionBegan );
>>>>>
>>>>> However, transactionBegan was always false.
>>>>>
>>>>>
>>>>> Kind regards
>>>>> Marc
>>>>>
>>>>>
>>>>>
>>>>> Am 10.07.2014 11:59, schrieb Nicolas Malin:
>>>>>> Do you open a transaction before ?
>>>>>>
>>>>>> TransactionUtil.begin();
>>>>>> delegator.storeAll(listOfGenericValues);
>>>>>> TransactionUtil.commit();
>>>>>>
>>>>>> Nicolas
>>>>>>
>>>>>> Le 10/07/2014 11:18, Marc von der Brüggen a écrit :
>>>>>>> Hello,
>>>>>>>
>>>>>>> does delegator.storeAll(listOfGenericValues) always perform a
>>>>>>> commit?
>>>>>>>
>>>>>>> I want to make sure the data is committed, but if I do the
>>>>>>> following:
>>>>>>>
>>>>>>> delegator.storeAll(listOfGenericValues);
>>>>>>> TransactionUtil.commit();
>>>>>>>
>>>>>>> I receive a warning:
>>>>>>> [java] 2014-07-10 10:20:55,841 (default-invoker-Thread-6) [
>>>>>>> TransactionUtil.java:210:WARN ] [TransactionUtil.commit] Not
>>>>>>> committing transaction, status is No Transaction (6)
>>>>>>>
>>>>>>>
>>>>>>> Thank you very much!
>>>>>>>
>>>>>>>
>>>>>>> Kind regards
>>>>>>> Marc
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>