- This topic has 1 reply, 2 voices, and was last updated 7 years, 9 months ago by Ed Shaw.
-
AuthorPosts
-
-
March 8, 2017 at 4:28 am #8249Shubham TulsyanParticipant
Hi Team,
We have one integration where we are getting XML message from external system and we are transforming into NexJ format. After that,we are performing some tasks. Sometime we get below error stack trace when process run:
nexj.core.runtime.RollbackException: Attempt to do work in a rolled back transaction. (err.runtime.txRollback)
at nexj.core.runtime.UnitOfWork.checkTransaction(UnitOfWork.java:821)
at nexj.core.runtime.InvocationContext.requireTransaction(InvocationContext.java:1849)
at nexj.core.scripting.ServerFunctions$15.invoke(ServerFunctions.java:622)
at SysService.delete()(class:SysService.delete():1)
at DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main(class:DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main:121)
at DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main(class:DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main:119)
at DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main(class:DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main:17)We looked into ” at DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main(class:DealogicSyncBatchJob.inboundSync(overrideTime,eventNo)$main:121)” line of code, and it is just invoking another event.
Can you please let us know if there are any specific scenario when this issue happen?
0 -
March 8, 2017 at 5:49 am #8256Ed ShawKeymaster
Hard to know without more info, but the transaction property on an event may be one of supported, required, new, none, mandatory, and unsupported. It seems yours is ‘required’.
From our framework docs, which will be published here shortly…
“A ‘required’ transactional event will join a transaction, if available, otherwise start a new transaction. Do not auto-commit on return. If the caller is running within a transaction and invokes the event, the event executes within the caller’s transaction. If the caller is not associated with a transaction, a new transaction will start for the event. Do not auto-commit before returning to the caller. (similar to JTA Required)”
Could it be that your batch process is running more frequently than your batch process is finishing? If so, maybe the trigger period could be lengthened, some blocking could be implemented to only start a new one when the old one has completed, or you could employ queues in your approach.
Anyone else have thoughts?
0
-
-
AuthorPosts
- You must be logged in to reply to this topic.