APAR status
Closed as program error.
Error description
When storing a new table definition in the table history metadata, CDC can get an ArrayIndexOutOfBoundsException from ScrapedTableContextStorage.tableIntervalExists() line 625. This is because CDC is assuming a table definition "interval" exists for all journals, but it is possible a table definition may not have intervals defined for all journals (nodes). This can occur if the table was partitioned on only a subset of the DPF nodes and the table definition was created when a DDL was read from the log. In this case, CDC creates an interval for each node (journal) when it sees a "Data Manager" (DM) log record for the DDL in the log for that node. CDC uses the log position of this log record when creating the interval boundaries. An "interval" is how CDC knows the period in the log for which a table definition is valid. DB2 is only required to log a DM log record on a node where a partition of that table resides. If the table is not partitioned on all nodes, CDC may not see a DM log record on the nodes which do not have a partition for that table. In that case, there will be no interval for some journals. CDC was using a for loop over all journals and expecting the number of intervals to be equal to the number of journals. If there are fewer intervals, without the fix, CDC can try to access an interval that does not exist and get an ArrayIndexOutOfBoundsException from ScrapedTableContextStorage.tableIntervalExists() line 625. The fix is to convert the for loop over all journals to a while loop over the intervals that exist, then get the journal Id from interval instead of using the for-loop index.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: * * This issue may affect you if you are using CDC for LUW * * version older than 11.4.0.2-5563. * **************************************************************** * PROBLEM DESCRIPTION: * * When storing a new table definition in the table history * * metadata, CDC can get an ArrayIndexOutOfBoundsException from * * ScrapedTableContextStorage.tableIntervalExists() line 625. * * This is because CDC is assuming a table definition * * "interval" exists for all journals, but it is possible a * * table definition may not have intervals defined for all * * journals (nodes). * * This can occur if the table was partitioned on only a subset * * of the DPF nodes and the table definition was created when a * * DDL was read from the log. * * In this case, CDC creates an interval for each node * * (journal) when it sees a "Data Manager" (DM) log record for * * the DDL in the log for that node. * * CDC uses the log position of this log record when creating * * the interval boundaries. An "interval" is how CDC knows the * * period in the log for which a table definition is valid. DB2 * * is only required to log a DM log * * record on a node where a partition of that table resides. If * * the table is not partitioned on all nodes, CDC may not see a * * DM log record on the nodes which do not have a partition for * * that table. In that case, there will be no interval for some * * journals. CDC was using a for loop over all journals and * * expecting the number of intervals to be equal to the number * * of journals. If there are fewer intervals, without the fix, * * CDC can try to access an interval that does not exist and * * get an ArrayIndexOutOfBoundsException from * * ScrapedTableContextStorage.tableIntervalExists() line 625. * * The fix is to convert the for loop over all journals to a * * while * * loop over the intervals that exist, then get the journal Id * * from interval instead of using the for-loop index. * **************************************************************** * RECOMMENDATION: * ****************************************************************
Problem conclusion
Upgrading to IDR 11.4.0.2-5563 or newer for LUW resolves the issue.
Temporary fix
Comments
APAR Information
APAR number
JR62455
Reported component name
IS CDC DB2 LUW
Reported component ID
5725E30DL
Reported release
B40
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2020-06-18
Closed date
2020-07-02
Last modified date
2020-07-02
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
IS CDC DB2 LUW
Fixed component ID
5725E30DL
Applicable component levels
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSTRGZ","label":"InfoSphere Data Replication"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B40","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Document Information
Modified date:
03 July 2020