I have two service engine methods in Java. Lets call them serviceA and serviceB. ServiceA calls serviceB. Both are transactional but serviceB requires a new transaction. The reason is I want serviceB to succeed even if serviceA needs to rollback (serviceB is a db audit logging method). In this setup, I get the following message when serviceA errors:
The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Service [serviceA] … Based on analysis of the database, I can see that serviceA did rollback as expected but serviceB didn't commit either. Not really sure how to fix this particular issue. Does "require-new-transaction" not really work as advertised? What am I missing? Thanks, Matt Bertolini |
Hi Matt,
If the service A has been rollbacked before call the serviceB ? If you call serviceB on new transaction, the serviceA wait the serviceB return so this last has been commited. Warn with log if you work with a loop : Service A : <iterate ..> <call-service name="serviceB"/> </> Nicolas Le 13/03/2013 20:33, Matthew Bertolini a écrit : > I have two service engine methods in Java. Lets call them serviceA and serviceB. ServiceA calls serviceB. Both are transactional but serviceB requires a new transaction. The reason is I want serviceB to succeed even if serviceA needs to rollback (serviceB is a db audit logging method). In this setup, I get the following message when serviceA errors: > > The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Service [serviceA] … > > Based on analysis of the database, I can see that serviceA did rollback as expected but serviceB didn't commit either. Not really sure how to fix this particular issue. Does "require-new-transaction" not really work as advertised? What am I missing? > > Thanks, > Matt Bertolini > -- Nicolas MALIN Consultant Tél : 06.17.66.40.06 Site projet : http://www.neogia.org/ ------- Société LibrenBerry Tél : 02.48.02.56.12 Site : http://www.librenberry.net/ |
ServiceA has errored and therefore a rollback has been initiated before
serviceB has been called but execution of serviceA has not yet completed. I am not sure what you mean by iterating. Also, I am working in pure java so any minilang solutions will not apply. Thanks, Matt Bertolini On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> wrote: >Hi Matt, > >If the service A has been rollbacked before call the serviceB ? >If you call serviceB on new transaction, the serviceA wait the serviceB >return so this last has been commited. > >Warn with log if you work with a loop : >Service A : > <iterate ..> > <call-service name="serviceB"/> > </> > >Nicolas > > > >Le 13/03/2013 20:33, Matthew Bertolini a écrit : >> I have two service engine methods in Java. Lets call them serviceA and >>serviceB. ServiceA calls serviceB. Both are transactional but serviceB >>requires a new transaction. The reason is I want serviceB to succeed >>even if serviceA needs to rollback (serviceB is a db audit logging >>method). In this setup, I get the following message when serviceA errors: >> >> The current transaction is marked for rollback, not beginning a new >>transaction and aborting current operation; the rollbackOnly was caused >>by: Service [serviceA] Š >> >> Based on analysis of the database, I can see that serviceA did rollback >>as expected but serviceB didn't commit either. Not really sure how to >>fix this particular issue. Does "require-new-transaction" not really >>work as advertised? What am I missing? >> >> Thanks, >> Matt Bertolini >> > > >-- >Nicolas MALIN >Consultant >Tél : 06.17.66.40.06 >Site projet : http://www.neogia.org/ >------- >Société LibrenBerry >Tél : 02.48.02.56.12 >Site : http://www.librenberry.net/ > |
Matt can you give me the serviceA code ?
Nicolas Le 14/03/2013 15:53, Matthew Bertolini a écrit : > ServiceA has errored and therefore a rollback has been initiated before > serviceB has been called but execution of serviceA has not yet completed. > I am not sure what you mean by iterating. Also, I am working in pure java > so any minilang solutions will not apply. > > Thanks, > Matt Bertolini > > On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> wrote: > >> Hi Matt, >> >> If the service A has been rollbacked before call the serviceB ? >> If you call serviceB on new transaction, the serviceA wait the serviceB >> return so this last has been commited. >> >> Warn with log if you work with a loop : >> Service A : >> <iterate ..> >> <call-service name="serviceB"/> >> </> >> >> Nicolas >> >> >> >> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>> I have two service engine methods in Java. Lets call them serviceA and >>> serviceB. ServiceA calls serviceB. Both are transactional but serviceB >>> requires a new transaction. The reason is I want serviceB to succeed >>> even if serviceA needs to rollback (serviceB is a db audit logging >>> method). In this setup, I get the following message when serviceA errors: >>> >>> The current transaction is marked for rollback, not beginning a new >>> transaction and aborting current operation; the rollbackOnly was caused >>> by: Service [serviceA] Š >>> >>> Based on analysis of the database, I can see that serviceA did rollback >>> as expected but serviceB didn't commit either. Not really sure how to >>> fix this particular issue. Does "require-new-transaction" not really >>> work as advertised? What am I missing? >>> >>> Thanks, >>> Matt Bertolini >>> >> >> -- >> Nicolas MALIN >> Consultant >> Tél : 06.17.66.40.06 >> Site projet : http://www.neogia.org/ >> ------- >> Société LibrenBerry >> Tél : 02.48.02.56.12 >> Site : http://www.librenberry.net/ >> -- Nicolas MALIN Consultant Tél : 06.17.66.40.06 Site projet : http://www.neogia.org/ ------- Société LibrenBerry Tél : 02.48.02.56.12 Site : http://www.librenberry.net/ |
Sorry for the delayed response. I was swamped with other things. I have
created a simplified example to demonstrate my code: // Outer transaction begins in serviceA public static Map serviceA(DispatchContext dispatchContext, Map inputData) { GenericDelegator delegator = dispatchContext.getDelegator(); LocalDispatcher dispatcher = dispatchContext.getDispatcher(); // ... try { Map results = dispatcher.runSync("doSomething", data); // Causes error and initiates a rollback. } catch (GenericServiceException e) { // Service B requires a new transaction and should always commit regardless of outer transaction. Map serviceBResults = dispatcher.runSync("serviceB", data); return ServiceUtil.returnError("message", e.getMessageList()); } // ... return ServiceUtil.returnSuccess(successMessage); } I hope this helps illustrate the issue. Thanks Matt Bertolini On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> wrote: >Matt can you give me the serviceA code ? > >Nicolas > >Le 14/03/2013 15:53, Matthew Bertolini a écrit : >> ServiceA has errored and therefore a rollback has been initiated before >> serviceB has been called but execution of serviceA has not yet >>completed. >> I am not sure what you mean by iterating. Also, I am working in pure >>java >> so any minilang solutions will not apply. >> >> Thanks, >> Matt Bertolini >> >> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>wrote: >> >>> Hi Matt, >>> >>> If the service A has been rollbacked before call the serviceB ? >>> If you call serviceB on new transaction, the serviceA wait the serviceB >>> return so this last has been commited. >>> >>> Warn with log if you work with a loop : >>> Service A : >>> <iterate ..> >>> <call-service name="serviceB"/> >>> </> >>> >>> Nicolas >>> >>> >>> >>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>> I have two service engine methods in Java. Lets call them serviceA and >>>> serviceB. ServiceA calls serviceB. Both are transactional but serviceB >>>> requires a new transaction. The reason is I want serviceB to succeed >>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>> method). In this setup, I get the following message when serviceA >>>>errors: >>>> >>>> The current transaction is marked for rollback, not beginning a new >>>> transaction and aborting current operation; the rollbackOnly was >>>>caused >>>> by: Service [serviceA] Š >>>> >>>> Based on analysis of the database, I can see that serviceA did >>>>rollback >>>> as expected but serviceB didn't commit either. Not really sure how to >>>> fix this particular issue. Does "require-new-transaction" not really >>>> work as advertised? What am I missing? >>>> >>>> Thanks, >>>> Matt Bertolini >>>> >>> >>> -- >>> Nicolas MALIN >>> Consultant >>> Tél : 06.17.66.40.06 >>> Site projet : http://www.neogia.org/ >>> ------- >>> Société LibrenBerry >>> Tél : 02.48.02.56.12 >>> Site : http://www.librenberry.net/ >>> > > >-- >Nicolas MALIN >Consultant >Tél : 06.17.66.40.06 >Site projet : http://www.neogia.org/ >------- >Société LibrenBerry >Tél : 02.48.02.56.12 >Site : http://www.librenberry.net/ > |
Matt,
As per you code if "doSomething" service return error then transaction will be roll backed, as if service return error then transaction marked as rollback hence it will rollback the transaction of parent service as well. If doSomething fails to perform business logic then you can return failure from service and then user ServiceUtil.isFailure() to check failure and if this return true then you can run serviceB and return error with errorMsg. So your code looks like this: {code} try { Map results = dispatcher.runSync("doSomething", data); // return failure if (ServiceUtil.isError(results)) { // Service B requires a new transaction and should always commit regardless of outer transaction. Map serviceBResults = dispatcher.runSync("serviceB", data); return ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) } } catch (GenericServiceException e) { return ServiceUtil.returnError("message", e.getMessageList()); } {code} Or you can you use another syntax of runSync method for serviceB: {code} try { Map results = dispatcher.runSync("doSomething", data); // Causes error and initiates a rollback. } catch (GenericServiceException e) { // Service B requires a new transaction and should always commit regardless of outer transaction. Map serviceBResults = dispatcher.runSync("serviceB", data, 300, true);// Use require new transaction true return ServiceUtil.returnError("message", e.getMessageList()); } {code} Thanks & Regards -- Deepak Dixit HotWax Media Pvt. Ltd. www.hotwaxmedia.com Contact :- +91-98267-54548 Skype :- deepakdixit On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: > Sorry for the delayed response. I was swamped with other things. I have > created a simplified example to demonstrate my code: > > // Outer transaction begins in serviceA > public static Map serviceA(DispatchContext dispatchContext, Map inputData) > { > GenericDelegator delegator = dispatchContext.getDelegator(); > LocalDispatcher dispatcher = dispatchContext.getDispatcher(); > > // ... > > try { > Map results = dispatcher.runSync("doSomething", data); // Causes > error and initiates a rollback. > } catch (GenericServiceException e) { > // Service B requires a new transaction and should always commit > regardless of outer transaction. > Map serviceBResults = dispatcher.runSync("serviceB", data); > return ServiceUtil.returnError("message", e.getMessageList()); > } > > // ... > > return ServiceUtil.returnSuccess(successMessage); > } > > > I hope this helps illustrate the issue. > > Thanks > Matt Bertolini > > On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> wrote: > >> Matt can you give me the serviceA code ? >> >> Nicolas >> >> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>> ServiceA has errored and therefore a rollback has been initiated before >>> serviceB has been called but execution of serviceA has not yet >>> completed. >>> I am not sure what you mean by iterating. Also, I am working in pure >>> java >>> so any minilang solutions will not apply. >>> >>> Thanks, >>> Matt Bertolini >>> >>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>> wrote: >>> >>>> Hi Matt, >>>> >>>> If the service A has been rollbacked before call the serviceB ? >>>> If you call serviceB on new transaction, the serviceA wait the serviceB >>>> return so this last has been commited. >>>> >>>> Warn with log if you work with a loop : >>>> Service A : >>>> <iterate ..> >>>> <call-service name="serviceB"/> >>>> </> >>>> >>>> Nicolas >>>> >>>> >>>> >>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>> I have two service engine methods in Java. Lets call them serviceA and >>>>> serviceB. ServiceA calls serviceB. Both are transactional but serviceB >>>>> requires a new transaction. The reason is I want serviceB to succeed >>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>> method). In this setup, I get the following message when serviceA >>>>> errors: >>>>> >>>>> The current transaction is marked for rollback, not beginning a new >>>>> transaction and aborting current operation; the rollbackOnly was >>>>> caused >>>>> by: Service [serviceA] Š >>>>> >>>>> Based on analysis of the database, I can see that serviceA did >>>>> rollback >>>>> as expected but serviceB didn't commit either. Not really sure how to >>>>> fix this particular issue. Does "require-new-transaction" not really >>>>> work as advertised? What am I missing? >>>>> >>>>> Thanks, >>>>> Matt Bertolini >>>>> >>>> >>>> -- >>>> Nicolas MALIN >>>> Consultant >>>> Tél : 06.17.66.40.06 >>>> Site projet : http://www.neogia.org/ >>>> ------- >>>> Société LibrenBerry >>>> Tél : 02.48.02.56.12 >>>> Site : http://www.librenberry.net/ >>>> >> >> >> -- >> Nicolas MALIN >> Consultant >> Tél : 06.17.66.40.06 >> Site projet : http://www.neogia.org/ >> ------- >> Société LibrenBerry >> Tél : 02.48.02.56.12 >> Site : http://www.librenberry.net/ >> > |
Thanks for the reply Deepak. The ServiceUtil.isError() and isFailure()
methods are in use by my services. I neglected to copy them over to my example. But what about unexpected exceptions like RuntimeException or something that is thrown by the service engine itself. I don't have a choice to return failure like I do in my own code but I still want my serviceB to commit? Thanks, Matt Bertolini On 3/22/13 1:46 PM, "Deepak Dixit" <[hidden email]> wrote: >Matt, > >As per you code if "doSomething" service return error then transaction >will be roll backed, as if service return error then transaction marked >as rollback hence it will rollback the transaction of parent service as >well. > >If doSomething fails to perform business logic then you can return >failure from service and then user ServiceUtil.isFailure() to check >failure and if this return true then you can run serviceB and return >error with errorMsg. > >So your code looks like this: > >{code} > try { > Map results = dispatcher.runSync("doSomething", data); // return >failure > if (ServiceUtil.isError(results)) { > // Service B requires a new transaction and should always commit >regardless of outer transaction. > Map serviceBResults = dispatcher.runSync("serviceB", data); > return >ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) > } > } catch (GenericServiceException e) { > return ServiceUtil.returnError("message", e.getMessageList()); > } >{code} > >Or you can you use another syntax of runSync method for serviceB: > >{code} >try { > Map results = dispatcher.runSync("doSomething", data); // Causes >error and initiates a rollback. > } catch (GenericServiceException e) { > // Service B requires a new transaction and should always commit >regardless of outer transaction. > Map serviceBResults = dispatcher.runSync("serviceB", data, 300, >true);// Use require new transaction true > return ServiceUtil.returnError("message", e.getMessageList()); > } >{code} > > >Thanks & Regards >-- >Deepak Dixit >HotWax Media Pvt. Ltd. >www.hotwaxmedia.com >Contact :- +91-98267-54548 >Skype :- deepakdixit > >On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: > >> Sorry for the delayed response. I was swamped with other things. I have >> created a simplified example to demonstrate my code: >> >> // Outer transaction begins in serviceA >> public static Map serviceA(DispatchContext dispatchContext, Map >>inputData) >> { >> GenericDelegator delegator = dispatchContext.getDelegator(); >> LocalDispatcher dispatcher = dispatchContext.getDispatcher(); >> >> // ... >> >> try { >> Map results = dispatcher.runSync("doSomething", data); // Causes >> error and initiates a rollback. >> } catch (GenericServiceException e) { >> // Service B requires a new transaction and should always commit >> regardless of outer transaction. >> Map serviceBResults = dispatcher.runSync("serviceB", data); >> return ServiceUtil.returnError("message", e.getMessageList()); >> } >> >> // ... >> >> return ServiceUtil.returnSuccess(successMessage); >> } >> >> >> I hope this helps illustrate the issue. >> >> Thanks >> Matt Bertolini >> >> On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> >>wrote: >> >>> Matt can you give me the serviceA code ? >>> >>> Nicolas >>> >>> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>>> ServiceA has errored and therefore a rollback has been initiated >>>>before >>>> serviceB has been called but execution of serviceA has not yet >>>> completed. >>>> I am not sure what you mean by iterating. Also, I am working in pure >>>> java >>>> so any minilang solutions will not apply. >>>> >>>> Thanks, >>>> Matt Bertolini >>>> >>>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>>> wrote: >>>> >>>>> Hi Matt, >>>>> >>>>> If the service A has been rollbacked before call the serviceB ? >>>>> If you call serviceB on new transaction, the serviceA wait the >>>>>serviceB >>>>> return so this last has been commited. >>>>> >>>>> Warn with log if you work with a loop : >>>>> Service A : >>>>> <iterate ..> >>>>> <call-service name="serviceB"/> >>>>> </> >>>>> >>>>> Nicolas >>>>> >>>>> >>>>> >>>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>>> I have two service engine methods in Java. Lets call them serviceA >>>>>>and >>>>>> serviceB. ServiceA calls serviceB. Both are transactional but >>>>>>serviceB >>>>>> requires a new transaction. The reason is I want serviceB to succeed >>>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>>> method). In this setup, I get the following message when serviceA >>>>>> errors: >>>>>> >>>>>> The current transaction is marked for rollback, not beginning a new >>>>>> transaction and aborting current operation; the rollbackOnly was >>>>>> caused >>>>>> by: Service [serviceA] Š >>>>>> >>>>>> Based on analysis of the database, I can see that serviceA did >>>>>> rollback >>>>>> as expected but serviceB didn't commit either. Not really sure how >>>>>>to >>>>>> fix this particular issue. Does "require-new-transaction" not really >>>>>> work as advertised? What am I missing? >>>>>> >>>>>> Thanks, >>>>>> Matt Bertolini >>>>>> >>>>> >>>>> -- >>>>> Nicolas MALIN >>>>> Consultant >>>>> Tél : 06.17.66.40.06 >>>>> Site projet : http://www.neogia.org/ >>>>> ------- >>>>> Société LibrenBerry >>>>> Tél : 02.48.02.56.12 >>>>> Site : http://www.librenberry.net/ >>>>> >>> >>> >>> -- >>> Nicolas MALIN >>> Consultant >>> Tél : 06.17.66.40.06 >>> Site projet : http://www.neogia.org/ >>> ------- >>> Société LibrenBerry >>> Tél : 02.48.02.56.12 >>> Site : http://www.librenberry.net/ >>> >> > |
Matt,
In this case you can use requireNewTransaction for serviceB calling. Map serviceBResults = serviceBResults = dispatcher.runSync("serviceB", data, <TransactionTimeOut> , true);// Use require new transaction true// Thanks & Regards -- Deepak Dixit HotWax Media Pvt. Ltd. www.hotwaxmedia.com Contact :- +91-98267-54548 Skype :- deepakdixit On Mar 22, 2013, at 11:45 PM, Matthew Bertolini wrote: > Thanks for the reply Deepak. The ServiceUtil.isError() and isFailure() > methods are in use by my services. I neglected to copy them over to my > example. But what about unexpected exceptions like RuntimeException or > something that is thrown by the service engine itself. I don't have a > choice to return failure like I do in my own code but I still want my > serviceB to commit? > > Thanks, > Matt Bertolini > > On 3/22/13 1:46 PM, "Deepak Dixit" <[hidden email]> wrote: > >> Matt, >> >> As per you code if "doSomething" service return error then transaction >> will be roll backed, as if service return error then transaction marked >> as rollback hence it will rollback the transaction of parent service as >> well. >> >> If doSomething fails to perform business logic then you can return >> failure from service and then user ServiceUtil.isFailure() to check >> failure and if this return true then you can run serviceB and return >> error with errorMsg. >> >> So your code looks like this: >> >> {code} >> try { >> Map results = dispatcher.runSync("doSomething", data); // return >> failure >> if (ServiceUtil.isError(results)) { >> // Service B requires a new transaction and should always commit >> regardless of outer transaction. >> Map serviceBResults = dispatcher.runSync("serviceB", data); >> return >> ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) >> } >> } catch (GenericServiceException e) { >> return ServiceUtil.returnError("message", e.getMessageList()); >> } >> {code} >> >> Or you can you use another syntax of runSync method for serviceB: >> >> {code} >> try { >> Map results = dispatcher.runSync("doSomething", data); // Causes >> error and initiates a rollback. >> } catch (GenericServiceException e) { >> // Service B requires a new transaction and should always commit >> regardless of outer transaction. >> Map serviceBResults = dispatcher.runSync("serviceB", data, 300, >> true);// Use require new transaction true >> return ServiceUtil.returnError("message", e.getMessageList()); >> } >> {code} >> >> >> Thanks & Regards >> -- >> Deepak Dixit >> HotWax Media Pvt. Ltd. >> www.hotwaxmedia.com >> Contact :- +91-98267-54548 >> Skype :- deepakdixit >> >> On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: >> >>> Sorry for the delayed response. I was swamped with other things. I have >>> created a simplified example to demonstrate my code: >>> >>> // Outer transaction begins in serviceA >>> public static Map serviceA(DispatchContext dispatchContext, Map >>> inputData) >>> { >>> GenericDelegator delegator = dispatchContext.getDelegator(); >>> LocalDispatcher dispatcher = dispatchContext.getDispatcher(); >>> >>> // ... >>> >>> try { >>> Map results = dispatcher.runSync("doSomething", data); // Causes >>> error and initiates a rollback. >>> } catch (GenericServiceException e) { >>> // Service B requires a new transaction and should always commit >>> regardless of outer transaction. >>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>> return ServiceUtil.returnError("message", e.getMessageList()); >>> } >>> >>> // ... >>> >>> return ServiceUtil.returnSuccess(successMessage); >>> } >>> >>> >>> I hope this helps illustrate the issue. >>> >>> Thanks >>> Matt Bertolini >>> >>> On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> >>> wrote: >>> >>>> Matt can you give me the serviceA code ? >>>> >>>> Nicolas >>>> >>>> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>>>> ServiceA has errored and therefore a rollback has been initiated >>>>> before >>>>> serviceB has been called but execution of serviceA has not yet >>>>> completed. >>>>> I am not sure what you mean by iterating. Also, I am working in pure >>>>> java >>>>> so any minilang solutions will not apply. >>>>> >>>>> Thanks, >>>>> Matt Bertolini >>>>> >>>>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>>>> wrote: >>>>> >>>>>> Hi Matt, >>>>>> >>>>>> If the service A has been rollbacked before call the serviceB ? >>>>>> If you call serviceB on new transaction, the serviceA wait the >>>>>> serviceB >>>>>> return so this last has been commited. >>>>>> >>>>>> Warn with log if you work with a loop : >>>>>> Service A : >>>>>> <iterate ..> >>>>>> <call-service name="serviceB"/> >>>>>> </> >>>>>> >>>>>> Nicolas >>>>>> >>>>>> >>>>>> >>>>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>>>> I have two service engine methods in Java. Lets call them serviceA >>>>>>> and >>>>>>> serviceB. ServiceA calls serviceB. Both are transactional but >>>>>>> serviceB >>>>>>> requires a new transaction. The reason is I want serviceB to succeed >>>>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>>>> method). In this setup, I get the following message when serviceA >>>>>>> errors: >>>>>>> >>>>>>> The current transaction is marked for rollback, not beginning a new >>>>>>> transaction and aborting current operation; the rollbackOnly was >>>>>>> caused >>>>>>> by: Service [serviceA] Š >>>>>>> >>>>>>> Based on analysis of the database, I can see that serviceA did >>>>>>> rollback >>>>>>> as expected but serviceB didn't commit either. Not really sure how >>>>>>> to >>>>>>> fix this particular issue. Does "require-new-transaction" not really >>>>>>> work as advertised? What am I missing? >>>>>>> >>>>>>> Thanks, >>>>>>> Matt Bertolini >>>>>>> >>>>>> >>>>>> -- >>>>>> Nicolas MALIN >>>>>> Consultant >>>>>> Tél : 06.17.66.40.06 >>>>>> Site projet : http://www.neogia.org/ >>>>>> ------- >>>>>> Société LibrenBerry >>>>>> Tél : 02.48.02.56.12 >>>>>> Site : http://www.librenberry.net/ >>>>>> >>>> >>>> >>>> -- >>>> Nicolas MALIN >>>> Consultant >>>> Tél : 06.17.66.40.06 >>>> Site projet : http://www.neogia.org/ >>>> ------- >>>> Société LibrenBerry >>>> Tél : 02.48.02.56.12 >>>> Site : http://www.librenberry.net/ >>>> >>> >> > |
Thanks Deepak. I will give that a shot.
Matt Bertolini On 3/22/13 2:28 PM, "Deepak Dixit" <[hidden email]> wrote: >Matt, > >In this case you can use requireNewTransaction for serviceB calling. > >Map serviceBResults = serviceBResults = dispatcher.runSync("serviceB", >data, <TransactionTimeOut> , true);// Use require new transaction true// > > >Thanks & Regards >-- >Deepak Dixit >HotWax Media Pvt. Ltd. >www.hotwaxmedia.com >Contact :- +91-98267-54548 >Skype :- deepakdixit > >On Mar 22, 2013, at 11:45 PM, Matthew Bertolini wrote: > >> Thanks for the reply Deepak. The ServiceUtil.isError() and isFailure() >> methods are in use by my services. I neglected to copy them over to my >> example. But what about unexpected exceptions like RuntimeException or >> something that is thrown by the service engine itself. I don't have a >> choice to return failure like I do in my own code but I still want my >> serviceB to commit? >> >> Thanks, >> Matt Bertolini >> >> On 3/22/13 1:46 PM, "Deepak Dixit" <[hidden email]> wrote: >> >>> Matt, >>> >>> As per you code if "doSomething" service return error then transaction >>> will be roll backed, as if service return error then transaction marked >>> as rollback hence it will rollback the transaction of parent service as >>> well. >>> >>> If doSomething fails to perform business logic then you can return >>> failure from service and then user ServiceUtil.isFailure() to check >>> failure and if this return true then you can run serviceB and return >>> error with errorMsg. >>> >>> So your code looks like this: >>> >>> {code} >>> try { >>> Map results = dispatcher.runSync("doSomething", data); // return >>> failure >>> if (ServiceUtil.isError(results)) { >>> // Service B requires a new transaction and should always commit >>> regardless of outer transaction. >>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>> return >>> ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) >>> } >>> } catch (GenericServiceException e) { >>> return ServiceUtil.returnError("message", e.getMessageList()); >>> } >>> {code} >>> >>> Or you can you use another syntax of runSync method for serviceB: >>> >>> {code} >>> try { >>> Map results = dispatcher.runSync("doSomething", data); // Causes >>> error and initiates a rollback. >>> } catch (GenericServiceException e) { >>> // Service B requires a new transaction and should always commit >>> regardless of outer transaction. >>> Map serviceBResults = dispatcher.runSync("serviceB", data, >>>300, >>> true);// Use require new transaction true >>> return ServiceUtil.returnError("message", e.getMessageList()); >>> } >>> {code} >>> >>> >>> Thanks & Regards >>> -- >>> Deepak Dixit >>> HotWax Media Pvt. Ltd. >>> www.hotwaxmedia.com >>> Contact :- +91-98267-54548 >>> Skype :- deepakdixit >>> >>> On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: >>> >>>> Sorry for the delayed response. I was swamped with other things. I >>>>have >>>> created a simplified example to demonstrate my code: >>>> >>>> // Outer transaction begins in serviceA >>>> public static Map serviceA(DispatchContext dispatchContext, Map >>>> inputData) >>>> { >>>> GenericDelegator delegator = dispatchContext.getDelegator(); >>>> LocalDispatcher dispatcher = dispatchContext.getDispatcher(); >>>> >>>> // ... >>>> >>>> try { >>>> Map results = dispatcher.runSync("doSomething", data); // Causes >>>> error and initiates a rollback. >>>> } catch (GenericServiceException e) { >>>> // Service B requires a new transaction and should always commit >>>> regardless of outer transaction. >>>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>> } >>>> >>>> // ... >>>> >>>> return ServiceUtil.returnSuccess(successMessage); >>>> } >>>> >>>> >>>> I hope this helps illustrate the issue. >>>> >>>> Thanks >>>> Matt Bertolini >>>> >>>> On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> >>>> wrote: >>>> >>>>> Matt can you give me the serviceA code ? >>>>> >>>>> Nicolas >>>>> >>>>> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>>>>> ServiceA has errored and therefore a rollback has been initiated >>>>>> before >>>>>> serviceB has been called but execution of serviceA has not yet >>>>>> completed. >>>>>> I am not sure what you mean by iterating. Also, I am working in pure >>>>>> java >>>>>> so any minilang solutions will not apply. >>>>>> >>>>>> Thanks, >>>>>> Matt Bertolini >>>>>> >>>>>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>>>>> wrote: >>>>>> >>>>>>> Hi Matt, >>>>>>> >>>>>>> If the service A has been rollbacked before call the serviceB ? >>>>>>> If you call serviceB on new transaction, the serviceA wait the >>>>>>> serviceB >>>>>>> return so this last has been commited. >>>>>>> >>>>>>> Warn with log if you work with a loop : >>>>>>> Service A : >>>>>>> <iterate ..> >>>>>>> <call-service name="serviceB"/> >>>>>>> </> >>>>>>> >>>>>>> Nicolas >>>>>>> >>>>>>> >>>>>>> >>>>>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>>>>> I have two service engine methods in Java. Lets call them serviceA >>>>>>>> and >>>>>>>> serviceB. ServiceA calls serviceB. Both are transactional but >>>>>>>> serviceB >>>>>>>> requires a new transaction. The reason is I want serviceB to >>>>>>>>succeed >>>>>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>>>>> method). In this setup, I get the following message when serviceA >>>>>>>> errors: >>>>>>>> >>>>>>>> The current transaction is marked for rollback, not beginning a >>>>>>>>new >>>>>>>> transaction and aborting current operation; the rollbackOnly was >>>>>>>> caused >>>>>>>> by: Service [serviceA] Š >>>>>>>> >>>>>>>> Based on analysis of the database, I can see that serviceA did >>>>>>>> rollback >>>>>>>> as expected but serviceB didn't commit either. Not really sure how >>>>>>>> to >>>>>>>> fix this particular issue. Does "require-new-transaction" not >>>>>>>>really >>>>>>>> work as advertised? What am I missing? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Matt Bertolini >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Nicolas MALIN >>>>>>> Consultant >>>>>>> Tél : 06.17.66.40.06 >>>>>>> Site projet : http://www.neogia.org/ >>>>>>> ------- >>>>>>> Société LibrenBerry >>>>>>> Tél : 02.48.02.56.12 >>>>>>> Site : http://www.librenberry.net/ >>>>>>> >>>>> >>>>> >>>>> -- >>>>> Nicolas MALIN >>>>> Consultant >>>>> Tél : 06.17.66.40.06 >>>>> Site projet : http://www.neogia.org/ >>>>> ------- >>>>> Société LibrenBerry >>>>> Tél : 02.48.02.56.12 >>>>> Site : http://www.librenberry.net/ >>>>> >>>> >>> >> > |
I have a doubt to create a new transaction after the lasted have been
set to failed. If the Deppak's solution doesn't work, try to run serviceB by runASync. Nicolas Le 22/03/2013 19:36, Matthew Bertolini a écrit : > Thanks Deepak. I will give that a shot. > > Matt Bertolini > > On 3/22/13 2:28 PM, "Deepak Dixit" <[hidden email]> wrote: > >> Matt, >> >> In this case you can use requireNewTransaction for serviceB calling. >> >> Map serviceBResults = serviceBResults = dispatcher.runSync("serviceB", >> data, <TransactionTimeOut> , true);// Use require new transaction true// >> >> >> Thanks & Regards >> -- >> Deepak Dixit >> HotWax Media Pvt. Ltd. >> www.hotwaxmedia.com >> Contact :- +91-98267-54548 >> Skype :- deepakdixit >> >> On Mar 22, 2013, at 11:45 PM, Matthew Bertolini wrote: >> >>> Thanks for the reply Deepak. The ServiceUtil.isError() and isFailure() >>> methods are in use by my services. I neglected to copy them over to my >>> example. But what about unexpected exceptions like RuntimeException or >>> something that is thrown by the service engine itself. I don't have a >>> choice to return failure like I do in my own code but I still want my >>> serviceB to commit? >>> >>> Thanks, >>> Matt Bertolini >>> >>> On 3/22/13 1:46 PM, "Deepak Dixit" <[hidden email]> wrote: >>> >>>> Matt, >>>> >>>> As per you code if "doSomething" service return error then transaction >>>> will be roll backed, as if service return error then transaction marked >>>> as rollback hence it will rollback the transaction of parent service as >>>> well. >>>> >>>> If doSomething fails to perform business logic then you can return >>>> failure from service and then user ServiceUtil.isFailure() to check >>>> failure and if this return true then you can run serviceB and return >>>> error with errorMsg. >>>> >>>> So your code looks like this: >>>> >>>> {code} >>>> try { >>>> Map results = dispatcher.runSync("doSomething", data); // return >>>> failure >>>> if (ServiceUtil.isError(results)) { >>>> // Service B requires a new transaction and should always commit >>>> regardless of outer transaction. >>>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>>> return >>>> ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) >>>> } >>>> } catch (GenericServiceException e) { >>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>> } >>>> {code} >>>> >>>> Or you can you use another syntax of runSync method for serviceB: >>>> >>>> {code} >>>> try { >>>> Map results = dispatcher.runSync("doSomething", data); // Causes >>>> error and initiates a rollback. >>>> } catch (GenericServiceException e) { >>>> // Service B requires a new transaction and should always commit >>>> regardless of outer transaction. >>>> Map serviceBResults = dispatcher.runSync("serviceB", data, >>>> 300, >>>> true);// Use require new transaction true >>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>> } >>>> {code} >>>> >>>> >>>> Thanks & Regards >>>> -- >>>> Deepak Dixit >>>> HotWax Media Pvt. Ltd. >>>> www.hotwaxmedia.com >>>> Contact :- +91-98267-54548 >>>> Skype :- deepakdixit >>>> >>>> On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: >>>> >>>>> Sorry for the delayed response. I was swamped with other things. I >>>>> have >>>>> created a simplified example to demonstrate my code: >>>>> >>>>> // Outer transaction begins in serviceA >>>>> public static Map serviceA(DispatchContext dispatchContext, Map >>>>> inputData) >>>>> { >>>>> GenericDelegator delegator = dispatchContext.getDelegator(); >>>>> LocalDispatcher dispatcher = dispatchContext.getDispatcher(); >>>>> >>>>> // ... >>>>> >>>>> try { >>>>> Map results = dispatcher.runSync("doSomething", data); // Causes >>>>> error and initiates a rollback. >>>>> } catch (GenericServiceException e) { >>>>> // Service B requires a new transaction and should always commit >>>>> regardless of outer transaction. >>>>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>>> } >>>>> >>>>> // ... >>>>> >>>>> return ServiceUtil.returnSuccess(successMessage); >>>>> } >>>>> >>>>> >>>>> I hope this helps illustrate the issue. >>>>> >>>>> Thanks >>>>> Matt Bertolini >>>>> >>>>> On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> >>>>> wrote: >>>>> >>>>>> Matt can you give me the serviceA code ? >>>>>> >>>>>> Nicolas >>>>>> >>>>>> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>>>>>> ServiceA has errored and therefore a rollback has been initiated >>>>>>> before >>>>>>> serviceB has been called but execution of serviceA has not yet >>>>>>> completed. >>>>>>> I am not sure what you mean by iterating. Also, I am working in pure >>>>>>> java >>>>>>> so any minilang solutions will not apply. >>>>>>> >>>>>>> Thanks, >>>>>>> Matt Bertolini >>>>>>> >>>>>>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Matt, >>>>>>>> >>>>>>>> If the service A has been rollbacked before call the serviceB ? >>>>>>>> If you call serviceB on new transaction, the serviceA wait the >>>>>>>> serviceB >>>>>>>> return so this last has been commited. >>>>>>>> >>>>>>>> Warn with log if you work with a loop : >>>>>>>> Service A : >>>>>>>> <iterate ..> >>>>>>>> <call-service name="serviceB"/> >>>>>>>> </> >>>>>>>> >>>>>>>> Nicolas >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>>>>>> I have two service engine methods in Java. Lets call them serviceA >>>>>>>>> and >>>>>>>>> serviceB. ServiceA calls serviceB. Both are transactional but >>>>>>>>> serviceB >>>>>>>>> requires a new transaction. The reason is I want serviceB to >>>>>>>>> succeed >>>>>>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>>>>>> method). In this setup, I get the following message when serviceA >>>>>>>>> errors: >>>>>>>>> >>>>>>>>> The current transaction is marked for rollback, not beginning a >>>>>>>>> new >>>>>>>>> transaction and aborting current operation; the rollbackOnly was >>>>>>>>> caused >>>>>>>>> by: Service [serviceA] Š >>>>>>>>> >>>>>>>>> Based on analysis of the database, I can see that serviceA did >>>>>>>>> rollback >>>>>>>>> as expected but serviceB didn't commit either. Not really sure how >>>>>>>>> to >>>>>>>>> fix this particular issue. Does "require-new-transaction" not >>>>>>>>> really >>>>>>>>> work as advertised? What am I missing? >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Matt Bertolini >>>>>>>>> >>>>>>>> -- >>>>>>>> Nicolas MALIN >>>>>>>> Consultant >>>>>>>> Tél : 06.17.66.40.06 >>>>>>>> Site projet : http://www.neogia.org/ >>>>>>>> ------- >>>>>>>> Société LibrenBerry >>>>>>>> Tél : 02.48.02.56.12 >>>>>>>> Site : http://www.librenberry.net/ >>>>>>>> >>>>>> >>>>>> -- >>>>>> Nicolas MALIN >>>>>> Consultant >>>>>> Tél : 06.17.66.40.06 >>>>>> Site projet : http://www.neogia.org/ >>>>>> ------- >>>>>> Société LibrenBerry >>>>>> Tél : 02.48.02.56.12 >>>>>> Site : http://www.librenberry.net/ >>>>>> -- Nicolas MALIN Consultant Tél : 06.17.66.40.06 Site projet : http://www.neogia.org/ ------- Société LibrenBerry Tél : 02.48.02.56.12 Site : http://www.librenberry.net/ |
Hi Nikols,
rynASync method do the same and create new transaction for service :) Thanks & Regards -- Deepak Dixit HotWax Media Pvt. Ltd. www.hotwaxmedia.com Contact :- +91-98267-54548 Skype :- deepakdixit On Mar 23, 2013, at 3:05 AM, Nicolas Malin wrote: > I have a doubt to create a new transaction after the lasted have been set to failed. > > If the Deppak's solution doesn't work, try to run serviceB by runASync. > > Nicolas > > Le 22/03/2013 19:36, Matthew Bertolini a écrit : >> Thanks Deepak. I will give that a shot. >> >> Matt Bertolini >> >> On 3/22/13 2:28 PM, "Deepak Dixit" <[hidden email]> wrote: >> >>> Matt, >>> >>> In this case you can use requireNewTransaction for serviceB calling. >>> >>> Map serviceBResults = serviceBResults = dispatcher.runSync("serviceB", >>> data, <TransactionTimeOut> , true);// Use require new transaction true// >>> >>> >>> Thanks & Regards >>> -- >>> Deepak Dixit >>> HotWax Media Pvt. Ltd. >>> www.hotwaxmedia.com >>> Contact :- +91-98267-54548 >>> Skype :- deepakdixit >>> >>> On Mar 22, 2013, at 11:45 PM, Matthew Bertolini wrote: >>> >>>> Thanks for the reply Deepak. The ServiceUtil.isError() and isFailure() >>>> methods are in use by my services. I neglected to copy them over to my >>>> example. But what about unexpected exceptions like RuntimeException or >>>> something that is thrown by the service engine itself. I don't have a >>>> choice to return failure like I do in my own code but I still want my >>>> serviceB to commit? >>>> >>>> Thanks, >>>> Matt Bertolini >>>> >>>> On 3/22/13 1:46 PM, "Deepak Dixit" <[hidden email]> wrote: >>>> >>>>> Matt, >>>>> >>>>> As per you code if "doSomething" service return error then transaction >>>>> will be roll backed, as if service return error then transaction marked >>>>> as rollback hence it will rollback the transaction of parent service as >>>>> well. >>>>> >>>>> If doSomething fails to perform business logic then you can return >>>>> failure from service and then user ServiceUtil.isFailure() to check >>>>> failure and if this return true then you can run serviceB and return >>>>> error with errorMsg. >>>>> >>>>> So your code looks like this: >>>>> >>>>> {code} >>>>> try { >>>>> Map results = dispatcher.runSync("doSomething", data); // return >>>>> failure >>>>> if (ServiceUtil.isError(results)) { >>>>> // Service B requires a new transaction and should always commit >>>>> regardless of outer transaction. >>>>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>>>> return >>>>> ServiceUtil.returnError(ServiceUtil.getErrorMessage(results)) >>>>> } >>>>> } catch (GenericServiceException e) { >>>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>>> } >>>>> {code} >>>>> >>>>> Or you can you use another syntax of runSync method for serviceB: >>>>> >>>>> {code} >>>>> try { >>>>> Map results = dispatcher.runSync("doSomething", data); // Causes >>>>> error and initiates a rollback. >>>>> } catch (GenericServiceException e) { >>>>> // Service B requires a new transaction and should always commit >>>>> regardless of outer transaction. >>>>> Map serviceBResults = dispatcher.runSync("serviceB", data, >>>>> 300, >>>>> true);// Use require new transaction true >>>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>>> } >>>>> {code} >>>>> >>>>> >>>>> Thanks & Regards >>>>> -- >>>>> Deepak Dixit >>>>> HotWax Media Pvt. Ltd. >>>>> www.hotwaxmedia.com >>>>> Contact :- +91-98267-54548 >>>>> Skype :- deepakdixit >>>>> >>>>> On Mar 22, 2013, at 8:02 PM, Matthew Bertolini wrote: >>>>> >>>>>> Sorry for the delayed response. I was swamped with other things. I >>>>>> have >>>>>> created a simplified example to demonstrate my code: >>>>>> >>>>>> // Outer transaction begins in serviceA >>>>>> public static Map serviceA(DispatchContext dispatchContext, Map >>>>>> inputData) >>>>>> { >>>>>> GenericDelegator delegator = dispatchContext.getDelegator(); >>>>>> LocalDispatcher dispatcher = dispatchContext.getDispatcher(); >>>>>> >>>>>> // ... >>>>>> >>>>>> try { >>>>>> Map results = dispatcher.runSync("doSomething", data); // Causes >>>>>> error and initiates a rollback. >>>>>> } catch (GenericServiceException e) { >>>>>> // Service B requires a new transaction and should always commit >>>>>> regardless of outer transaction. >>>>>> Map serviceBResults = dispatcher.runSync("serviceB", data); >>>>>> return ServiceUtil.returnError("message", e.getMessageList()); >>>>>> } >>>>>> >>>>>> // ... >>>>>> >>>>>> return ServiceUtil.returnSuccess(successMessage); >>>>>> } >>>>>> >>>>>> >>>>>> I hope this helps illustrate the issue. >>>>>> >>>>>> Thanks >>>>>> Matt Bertolini >>>>>> >>>>>> On 3/14/13 11:01 AM, "Nicolas Malin" <[hidden email]> >>>>>> wrote: >>>>>> >>>>>>> Matt can you give me the serviceA code ? >>>>>>> >>>>>>> Nicolas >>>>>>> >>>>>>> Le 14/03/2013 15:53, Matthew Bertolini a écrit : >>>>>>>> ServiceA has errored and therefore a rollback has been initiated >>>>>>>> before >>>>>>>> serviceB has been called but execution of serviceA has not yet >>>>>>>> completed. >>>>>>>> I am not sure what you mean by iterating. Also, I am working in pure >>>>>>>> java >>>>>>>> so any minilang solutions will not apply. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Matt Bertolini >>>>>>>> >>>>>>>> On 3/13/13 4:12 PM, "Nicolas Malin" <[hidden email]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Matt, >>>>>>>>> >>>>>>>>> If the service A has been rollbacked before call the serviceB ? >>>>>>>>> If you call serviceB on new transaction, the serviceA wait the >>>>>>>>> serviceB >>>>>>>>> return so this last has been commited. >>>>>>>>> >>>>>>>>> Warn with log if you work with a loop : >>>>>>>>> Service A : >>>>>>>>> <iterate ..> >>>>>>>>> <call-service name="serviceB"/> >>>>>>>>> </> >>>>>>>>> >>>>>>>>> Nicolas >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Le 13/03/2013 20:33, Matthew Bertolini a écrit : >>>>>>>>>> I have two service engine methods in Java. Lets call them serviceA >>>>>>>>>> and >>>>>>>>>> serviceB. ServiceA calls serviceB. Both are transactional but >>>>>>>>>> serviceB >>>>>>>>>> requires a new transaction. The reason is I want serviceB to >>>>>>>>>> succeed >>>>>>>>>> even if serviceA needs to rollback (serviceB is a db audit logging >>>>>>>>>> method). In this setup, I get the following message when serviceA >>>>>>>>>> errors: >>>>>>>>>> >>>>>>>>>> The current transaction is marked for rollback, not beginning a >>>>>>>>>> new >>>>>>>>>> transaction and aborting current operation; the rollbackOnly was >>>>>>>>>> caused >>>>>>>>>> by: Service [serviceA] Š >>>>>>>>>> >>>>>>>>>> Based on analysis of the database, I can see that serviceA did >>>>>>>>>> rollback >>>>>>>>>> as expected but serviceB didn't commit either. Not really sure how >>>>>>>>>> to >>>>>>>>>> fix this particular issue. Does "require-new-transaction" not >>>>>>>>>> really >>>>>>>>>> work as advertised? What am I missing? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Matt Bertolini >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> Nicolas MALIN >>>>>>>>> Consultant >>>>>>>>> Tél : 06.17.66.40.06 >>>>>>>>> Site projet : http://www.neogia.org/ >>>>>>>>> ------- >>>>>>>>> Société LibrenBerry >>>>>>>>> Tél : 02.48.02.56.12 >>>>>>>>> Site : http://www.librenberry.net/ >>>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Nicolas MALIN >>>>>>> Consultant >>>>>>> Tél : 06.17.66.40.06 >>>>>>> Site projet : http://www.neogia.org/ >>>>>>> ------- >>>>>>> Société LibrenBerry >>>>>>> Tél : 02.48.02.56.12 >>>>>>> Site : http://www.librenberry.net/ >>>>>>> > > > -- > Nicolas MALIN > Consultant > Tél : 06.17.66.40.06 > Site projet : http://www.neogia.org/ > ------- > Société LibrenBerry > Tél : 02.48.02.56.12 > Site : http://www.librenberry.net/ > |
Free forum by Nabble | Edit this page |