APAR status
Closed as program error.
Error description
Customer BMP accessing SVSO data received unexpected status FR ( STATFR FRSTAT ) when NBA + OBA not exceeed. Problem in fact was inability to get a buffer from the SVSO LKASID pool for the SVSO area and was not at all related to BMP's actual useage of buffers. The pool had expanded to the absolute maximum, which is twice the limit specified by customer in DFSVSMxx pool definition. A SLIP taken when message DFS2831I was issued showed the BMP in process of extending the pool, despite the fact that there were many buffers available on the RBA hash anchor for the RBA the BMP was searching for. The BMP access intent was *NOT* PROCOPT=GO, so the algorithm used by DBFSGAB0 is to search the RBA hash anchor for a matching RBA, and if a match is not found, look on the available queue for an empty buffer, and finally, if no empty buffers available, steal the last buffer on the RBA hash anchor. In this case, there was no buffer on the RBA hash anchor containing the search RBA and there were no empty buffers on the available queue. An attempt was therefor made to steal the last buffer on the RBA hash anchor. In this case, DMHRNIDT was not zero, indicating the DMHR belonged to a RIS indoubt EEQE structure and should not be stolen. The algorithm in this case is to invoke buffer steal DBFCBHL0, to try and reclaim an available buffer from those already allocated to the dependent region, and if that fails, invoke buffer pool expansion. In this case, the BMP had no buffers to steal, so pool expansion was called. If pool expansion fails, as it will when the pool expands to the hard limit of twice user's specification, then DBFSGAB0 will set RC=12 and this will result in the DL/I call receiving status FR. Analysis of the log showed that the DMHR in question had in fact been part of a RIS EEQE structure some days earlier. ( CICS DBCTL access ) which was eventually resolved by ABORT. DBFDIDT0 sets DMHRNIDT to x'0001' when the UR goes indoubt and RIS is built. DBFSLG20 will decrement DMHRNIDT if UR is eventually committed but there appears to be no path to decrement DMHRNIDT if UR is aborted. The DMHR is released to the pool with DMHRNIDT not zero, which, in fact, does not prevent it's reuse when it is located by RBA by subsequent callers. The log shows in fact it is reused many times before the BMP eventually runs and fails. DMHRRTKN at time of failure is from the last use, not from the UR that went indoubt. However, this DMHR is not stealable, and when it migrates to the bottom of it's RBA hash anchor and becomes a steal candidate, it blocks steals off this anchor and will force buffer pool expansion when a steal off this anchor is required. This leads to overexpansion of the buffer pool and, depending on circumstances, a buffer obtain failure and status FR to a caller looking for an RBA that hashes to same anchor but for which there is no matching buffer actually on said anchor.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: IMSFP R910 Shared VSO ( SVSO ) users. * **************************************************************** * PROBLEM DESCRIPTION: UNEXPECTED SVSO PRIVATE BUFFER POOL * * EXPANSION DUE TO DMHR WITH DMHRNIDT * * NONZERO AT END OF RBA HASH ANCHOR. * * DMHR NOT STEALABLE. * **************************************************************** * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** This service corrects the problem relating to a residual buffer indoubt field DMHRNIDT after the indoubt was aborted. In this case, customer BMP accessing SVSO data received unexpected status FR ( STATFR FRSTAT ) when NBA + OBA not exceed. The DMHR had been part of a RIS EEQE structure earlier ( CICS DBCTL access ) which was eventually resolved by ABORT. DBFDIDT0 sets DMHRNIDT to x'0001' when the UR goes indoubt and RIS is built. DBFSLG20 will decrement DMHRNIDT if UR is eventually committed, but DMHRNIDT is not decrease when UR is aborted. The DMHR releases back to the pool with DMHRNIDT not zero. If the RBA match, the buffer can be reuse by subsequent callers. However, this DMHR is not stealable, and when it migrates to the end of it's RBA hash anchor and becomes a steal candidate, it blocks steals off this anchor. This leads to overexpansion of the buffer pool and causes buffer obtain failure with status FR when a caller looking for a buffer with an RBA that hashes to the same anchor.
Problem conclusion
AIDS: RIDS/FP RIDS/DEDB FP DEDB DEP: NONE GEN: *** END IMS KEYWORDS *** The following change has been made to correct the reported problem: DBFDLG20: Code added in the indoubt abort case to reset the DMHR buffer indoubt field DMHRNIDT.
Temporary fix
********* * HIPER * *********
Comments
APAR Information
APAR number
PK37245
Reported component name
IMS V9
Reported component ID
5655J3800
Reported release
900
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2007-01-10
Closed date
2007-02-15
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:
UK22226
Modules/Macros
DBFDLG20
Fix information
Fixed component name
IMS V9
Fixed component ID
5655J3800
Applicable component levels
R900 PSY UK22226
UP07/02/23 P F702
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCVRBJ","label":"System Services"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.1","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
30 April 2008