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 |
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 > |
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 |
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 >>> >> > > |
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 |
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. 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 >>>>> >>>> >>> >>> >> > > |
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 |
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 >>>>>>> >>>>>> >>>>> >>>>> >>>> >>> >>> >> > > |
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 >>>>>>> >>>>>> >>>>> >>>>> >>>> >>> >>> >> > > |
Free forum by Nabble | Edit this page |