DB2 - Problem description
Problem IT36201 | Status: Closed |
A CLIENT MAY ABEND IN FUNCTION SQLXAPREPARECOMMIT | |
product: | |
DB2 FOR LUW / DB2FORLUW / B50 - DB2 | |
Problem description: | |
With a stack similar to this one: sqlxaPrepareAll(db2UCconAnchor*, sqlca*) from /home//sqllib/lib64/libdb2o.so.1 sqlxaCoordinatedCommit from /home//sqllib/lib64/libdb2o.so.1 CLI_sqlCommit(CLI_CONNECTINFO*, CLI_ERRORHEADERINFO*) from /home//sqllib/lib64/libdb2o.so.1 SQLTransact2(CLI_ENVIRONMENTINFO*, CLI_CONNECTINFO*, short, sqlca*, CLI_ERRORHEADERINFO*) from /home//sqllib/lib64/libdb2o.so.1 SQLEndTran from /home//sqllib/lib64/libdb2o.so.1 SQLTransact from /opt/ibm/ace-11.0.0.10/ie02/lib/libodbc.so SQLTransact from /opt/ibm/ace-11.0.0.10/ie02/lib/libodbcinterface.so When the following conditions are met: 1) Three or more connections were made. 2) Connections are of Type 2 (e.g. ConnectType=2 is set in db2cli.ini for data sources). 3) The application disconnected inadvertently from the transaction manager database. 4) Two or more connections have an outstanding distributed transaction that is being committed after 3) occurred and no new connection was made. In an environment where connections are configured to use a distributed transaction processing model by using type 2 connections with Db2 as the transaction manager the connection to the transaction manager is defined by the Transaction manager database name (TM_DATABASE) database instance configuration (DBM CFG) parameter. By default, this parameter is set to 1ST_CONN. This means the first connection made by the application becomes implicitly the transaction manager database connection. This connection is used when processing distributed transactions at commit time if they involve two or more participants. The abend can occur when the application inadvertently disconnects explicitly from the database that also represented the transaction manager database while a distributed transaction needs to be committed and no other database connection was established. If the application makes another connection prior to the commit processing start then this connection becomes the transaction manager database connection and the commit processing can proceed. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * all * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Db2 11.5.6 * **************************************************************** | |
Local Fix: | |
The code is fixed to prevent the abend and instead return SQL0859 with SQLCODE -1024 to indicate that the connection to the transaction manager database is missing. The application must make a new connection which becomes the new transaction manager database connection and redo the transaction. | |
Solution | |
Workaround | |
**************************************************************** * USERS AFFECTED: * * all * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Db2 11.5.6 * **************************************************************** | |
Comment | |
Upgrade to Db2 11.5.6 | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 12.03.2021 10.06.2021 10.06.2021 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) |