Home Forums Scheme Invoke DealogicWebServiceInbound Service: Error: exception caught Error

Viewing 1 reply thread
  • Author
    • #8249
      Shubham TulsyanShubham Tulsyan

      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?

    • #8256
      Ed ShawEd Shaw

      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?

Viewing 1 reply thread
  • You must be logged in to reply to this topic.