DB2 - Problem description
Problem IT33994 | Status: Closed |
DB2 MAY HANG SHORTLY AFTER COMMITTING A CREATE TABLE WITH AN AGENT WAITING FOR SQLO_LT_SQLD_TCB__LOADINPROGRESS LATCH IN SQLBFIX | |
product: | |
DB2 FOR LUW / DB2FORLUW / B50 - DB2 | |
Problem description: | |
Db2 may experience a hang shortly after an object is created and committed while an agent is trying to allocate new extents for the new object. While allocating extents for this object, the agent will check if the object state includes SQLB_OBJ_CreateInProg. If this state is set, and the object creation has already been committed, the agent will attempt to clear the SQLB_OBJ_CreateInProg state. Doing so requires refreshing the TCB which may require a TCB load depending on if the TCB has previously been loaded into memory or not. If this agent has other pages fixed prior to trying to load the TCB, this agent may become involved in a circular wait with other agents. The agent allocating extents to the object will have a stack similar to the following: getConflictComplex getConflict sqlo_latch_ns sqldLoadTCBObjDesc sqldFixTCBObj sqldRefreshObj sqlbFixAndSearchOneSMPPage sqlbSearchSomeSMPs sqlbAllocateExtent sqlbDMScheckObjAlloc sqlbExtendObject sqliGetPages sqliSearchMapsAndGetPage sqliGetPageBufferPool sqlischa sqlischa sqliaddkP8sqeAgent sqldKeyInsert sqldRowInsert This agent will be holding page latches and waiting on the TCB load latch: Waiting on latch type: (SQLO_LT_SQLD_TCB__loadInProgress) - Address: (0x7ff0639344a0), Line: 9511, File: sqldtcb.C Holding Latch type: (SQLO_LT_SQLI_INX_PAGE_CACHE__ipcLatch) - Address: (0x7ff0639346b8), Line: 1108, File: sqligtpg.C HoldCount: 1 Holding Latch type: (SQLO_LT_SQLB_POOL_ADDRESS_INFO__pool_address_latch) - Address: (0x7ff03c096fe0), Line: 176, File: sqlegss.h HoldCount: 1 Holding Latch type: (SQLO_LT_SQLB_POOL_CB__readLotch) - Address: (0x7fd4b40d6d40), Line: 2577, File: sqlbSMP.C HoldCount: 1 Holding Latch type: (SQLO_LT_SQLP_SAVEPOINTS__spLatch) - Address: (0x7ff055e0ed38), Line: 72, File: sqlpSavepoint.h HoldCount: 1 Holding Latch type: (SQLO_LT_SQLB_POOL_CB__ptfLotch) - Address: (0x7fd4af551fa0), Line: 2577, File: sqlbSMP.C HoldCount: 1 Holding Latch type: (SQLO_LT_sqeSuspendIOCB__m_suspendIOCBLatch) - Address: (0x20d5cef00), Line: 2570, File: sqlbSMP.C HoldCount: 1 Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff02950d788), mode: S, Line: 1099, File: sqlbslat.h Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff029527448), mode: X, Line: 1099, File: sqlbslat.h Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff02950d888), mode: X, Line: 1099, File: sqlbslat.h Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff0294f5ac8), mode: X, Line: 2223, File: sqlbgbc.C Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff0294eda88), mode: X, Line: 2223, File: sqlbgbc.C The rest of this example shows how two other agents may be holding page latches and a TCB load latch such that a circular wait occurs. These specific stacks are not necessarily required for this problem to occur but are one such example that will cause a circular wait. This agent is holding the TCB load latch that the aforementioned agent is waiting on: getConflictComplex getConflict sqloSXULatch::get sqlbUpgradePageLatchForRefreshAndPLock sqlbgbGetPagePLock sqlbfix sqliRefreshInfoPage sqldRefreshIndexChain sqldFixTCBP sqldLockTableFixTCB sqldGetInsertTable sqldBuildForADC sqldAttemptADC sqldRowInsert Waiting on latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff0294edc88), Line: 3660, File: sqlbslat.h Holding Latch type: (SQLO_LT_SQLD_TCB__loadInProgress) - Address: (0x7ff0639344a0), Line: 607, File: sqldtm_inlines.h HoldCount: 1 Holding Latch type: (SQLO_LT_SQLP_SAVEPOINTS__spLatch) - Address: (0x7ff0469fdd38), Line: 72, File: sqlpSavepoint.h HoldCount: 1 Holding Latch type: (SQLO_LT_SQLD_TCB_LOTCH__tcbValidityLotch) - Address: (0x7ff065d6d360), Line: 11192, File: sqldtcb.C HoldCount: 1 Holding Latch type: (SQLO_LT_SQLD_TCB_LOTCH__tcbIndexValidityLotch) - Address: (0x7ff063934540), Line: 10934, File: sqldtcb.C HoldCount: 1 Finally, the above agent is waiting on a page latch held by the following agent, which itself is waiting on a page latch held by the first agent that is waiting on the TCB load latch, and completing the circular wait: getConflictComplex getConflict sqlbfix sqlifix sqliFixPageWithChildPtr sqlischa sqlischa sqliaddk sqldKeyInsert sqldRowInsert Waiting on latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff029527448), Line: 511, File: sqlbslat.h Holding Latch type: (SQLO_LT_SQLP_SAVEPOINTS__spLatch) - Address: (0x7ff055054d38), Line: 72, File: sqlpSavepoint.h HoldCount: 1 Holding latch type: (SQLO_LT_SQLB_BPD__bpdLatch_SX) - Address: (0x7ff0294edc88), mode: S, Line: 1099, File: sqlbslat.h | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * all * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Db2 11.5.5.1 or higher * **************************************************************** | |
Local Fix: | |
Kill the Db2 process where the hang occurs. If this hang occurs on a pureScale member, only the member where this circular wait occurs should be killed. | |
Solution | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 24.08.2020 31.03.2021 31.03.2021 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) |