Commit failed!


Our production scheduler is going to be stuck when I am getting ERROR as below.
I am using JDBC adapter with LOCAL_TRANSACTION and not explicitly defining transactions.
Does anybody have any ideas? Please give solution to fix error. Thanks in advance for your help.

2010-09-23 01:42:36 PDT [SCC.0121.0034E] commit failed: more than 1 local trans enlisted. xid = [FormatId=45744, GlobalId=sc-wm-p1/1283034731334, BranchQual=1] rxid = {2}
2010-09-23 01:42:37 PDT [SCC.0121.0026E] delisted transaction commit failed: java.lang.IllegalStateException: commit failed. more than one local transaction enlisted. xid = sc-wm-p1/1283034731334
2010-09-23 01:42:38 PDT [ART.0114.1007E] Adapter Runtime: Error Logged. See Error log for details. Error: [ART.117.4018] Adapter Runtime (Adapter Service): Error while closing transactions at service completion Error:[ART.117.4015] Adapter Runtime (Adapter Service): Error(s) occurred while closing adapter connections.
[ART.117.4015] Adapter Runtime (Adapter Service): Error(s) occurred while closing adapter connections…

“commit failed: more than 1 local trans enlisted”

This means that you are using 2 (or more) connections with “LOCAL_TRANSACTION”; and this is not allowed…

If it fails only in your production when you use the scheduler, check if the “Transaction Type” of your JDBC adapters are the same between your different environnement.

If it fails in all your environnement (this should be the case), explain the logic of your scheduler and when/why you use differents connections. May be you can use an XA_TRANSACTION in one of yours connections but we need to know the logic before.

Thanks arnaudW for your quick and useful reply.

Some brief information:
Before we were have two separate servers. One for EAI & another for B2B Integration, but one month back we have merged those both integrations into a (single) new server.
Now the new server is handling 14 JDBC connections (7 No-transaction & 7 Local-Transaction connections) to connect different DataBases.

We did not face any problem in the past by maintaining separate servers for EAI & B2B integration. Now also files have been processing everyday but rarely we are facing problem with error “commit failed: more than 1 local trans enlisted” (in 30 days time we got this error 3 times only) here my doubt is why server is not giving this error at every processing time? Please give suggestions & comments on this.

Maybe 3 times your “process” take a different “way” in the logic and all the other “good” times it uses only one connection.
The process will not failed at runtime if you have implemented for example a service with 2 differents LOCAL_TRANSACTION connections and it doesn’t use it (ie. if you use a branch in a service you have several way to go to the end of the service). But it will if it used it.

I hope i’m clear :o

You are absolutely right arnaudW. After deep observation with old log files I came to know that 3 time main service used two LOCAL_TRANSACTION connections.
In this case how can I avoid such a issue…
Is it helpful if I change connection type for one JDBC connection? OR any other solution?

First check if your two local_transaction connections are used by another service.

  • If one connection is only used in your “main service” you can change it to XA_CONNECTION (DataSource Class in tje JDBC Adapter to “oracle.jdbc.xa.client.OracleXADataSource” for Oracle).
    But check the “Transaction Management of JDBC Adapter Connections” in the “webMethods_JDBC_Adapter_User’s_Guide” for more information about XA_TRANSACTION (ie. this connection cannot have insert/delete/… notifications).

  • If they are both used in others services, try to change the connection which is less “used” (ie. the connexion used to insert in a partenary’s table)

In all cases, test it in your developpement environnement and check for regressions.

Obviously you can also recreate your services from scratch :smiley:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.