APAR status
Closed as program error.
Error description
Get/Release buffers from wrong buffer pools . This APAR PE's APAR PK24575 whose PTF is UK19165
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All users of IMS DRF version 3 * * release 1 might be affected. * **************************************************************** * PROBLEM DESCRIPTION: There are two issues in this APAR. * * First, the recover process gets into * * a loop while reading logs. Second, * * error handling while getting a buffer * * during retrieve data processing caused * * data corruption. The buffer error * * also caused an abend U385-A. * * This is a PE APAR of PK24575. * **************************************************************** * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** There are two loops during the recover process: The loop in FRXUORM0 was caused by the logic failing to properly maintain the free chain of RVUR blocks; in some cases the storage for an RVUR block was released, but the free chain was not updated to reflect this release. This resulted in the free chain having a pointer to previously released storage. the chain had incorrect pointers that resulted in an endless loop. The loop in FRXRBUF0 was created when a log record of length 0 was read from an incorrectly allocated log file. The log file had incorrectly been allocated as having unformatted, 0-length records. Logic in FRXRBUF0 depended on the length of the log record to index through a block of log records kept in memory. Because the index was incremented by 0 the end of the block of log records was never reached. The data corruption and Abend U385-A are caused when a process in DRF obtains a buffer and saves it for future processing. The buffer is filled with log records and sent to the UOR manager. The pointer to the buffer is not cleared when the buffer is sent. The next set of log records is copied into the same buffer that is enqueued to the UOR manager. This happens over and over again until the end of data is reached. The Abend U385-A happens when the earlier buffer data is overlayed and detected by the UOR manager. The data corruption occurs when the overlay is within a log record and not detected by the UOR manager. The later case sends the overlayed log data to later processing which writes the bad data to the output database data set.
Problem conclusion
AIDS: RIDS/UTIL RIDS/DBS DBS/UTIL GEN: *** END IMS KEYWORDS *** The following modules have been modified to fix the problems: FRXUORM0: The logic was changed to properly maintain the free chain of RVUR blocks. FRXRBUF0 and FRXRLRA0: changed to detect 0-length records and terminate with a message that includes the name of the log dataset that was incorrectly allocated. FRXQBUF0: Was modified to get a new buffer each time when we retrieve a new block of data to fix the data corruption and ABENDU385-A. FRXHBUF0: The definition of two buffer pools was modified to avoid buffer size mismatches as a potential problem. The buffer size was also corrected from a standard buffer size to the size of the buffer that we are actually getting. FRXLMRG0,FRXICTL0,FRXPDSR0,FRXPDSS0,FRXPSDR0,FRXPSDS0: These modules are modified to make sure that the buffers will be returned to the right buffer pools. FRXIOCN0: The field of input record was initialized to NIL to avoid the situation of presenting I/O error message when no error has occurred. FRXCAMG0: A new message was added for detecting 0-length records. FRXRBUF0 and FRXCAMG0: MSGFRD2892I is modified to add a new reason: 'INVALID REC LENGTH' to the message. The User's Guide and Reference of IBM IMS Database Recovery Facility for z/OS has been changed (SC18-9407-02). FRD2892I needs to be modified: Reason Indicates the reason for the error, and is one of the following: . INVALID TIME STAMP . INVALID REC LENGTH After existing Explanation for 'invalid time stamp', add the following: INVALID REC LENGTH An invalid record length is detected when processing a record while reading from a log data set. The record length is zero. This can occur when the log data set is created with unformatted data set characteristic. DRF terminates early without completing the recovery. After existing User response for 'invalid time stamp', add the following: User response: Examine the log data set identified in the message and repair it to the log data set characteristics which the IMS product supports.
Temporary fix
********* * HIPER * *********
Comments
APAR Information
APAR number
PK52492
Reported component name
IMS DB RECOVERY
Reported component ID
5655I4400
Reported release
310
Status
CLOSED PER
PE
YesPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2007-09-07
Closed date
2007-10-24
Last modified date
2008-04-30
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UK30638
Modules/Macros
FRXBDMG0 FRXCAMG0 FRXHBUF0 FRXICTL0 FRXLMRG0 FRXPDSR0 FRXPDSS0 FRXPSDR0 FRXPSDS0 FRXQBIN0 FRXQBUF0 FRXRBUF0 FRXRLRA0 FRXRVGB FRXUORM0
SC18940702 |
Fix information
Fixed component name
IMS DB RECOVERY
Fixed component ID
5655I4400
Applicable component levels
R310 PSY UK30638
UP07/10/27 P F710 «
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCX88Z","label":"IMS Database Recovery Facility"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"3.1.0","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
30 April 2008