[comp.protocols.ibm] Problem with JES2 proclibs

cook@bdofed.UUCP (b) (07/27/89)

This article probably constitutes misuse of this news group (apologies)
but it is the only forum of IBM systems programmers that I have access to.
Is there a more appropriate news group that perhaps I am not getting in 
my feed?

On to the subject at hand.  I am a systems programmer responsible for a 
4381 running MVS/SP and JES2 1.3.6 . For a long time we have been
experiencing a problem with JES2 that no one has been able to explain or
solve. Occasionally when a proc has been updated in or added to one of the 
proclibs, batch jobs encounter problems accessing the proc. The job either 
gets the old copy of the proc, or, in the case of a new proc, gets the error
message "I/O ERROR READING PROCLIB". 

The only way we know of to straighten this problem out is to stop JES2 and 
hot start it. This is not a great thing to be doing in the middle of the
day!! ISC have carried this problem all the way to the JES2 development team
without any success. Does anyone have any ideas or suggestions?

Here are some details that may aid the diagnosis:

We run the following OEM products; ACF2, TLMS and FDR/ABR (being replaced
by DFHSM!).

The JES2 proc is; 

//JES2    PROC MEMBER=JES2PARM,ALTMEM=JES2PARM                          
//IEFPROC EXEC PGM=HASJES20,DPRTY=(15,15),TIME=1440,PERFORM=9           
//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000          
//         DD  DSN=SYS1.PROCLIB,DISP=SHR                                
//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013       
//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013     
//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007      
//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005      
//HASPPARM DD  DSN=SYS1.JESPARMS(&MEMBER),DISP=SHR,FREE=CLOSE           
//ALTPARM  DD  DSN=SYS1.PARMLIB(&ALTMEM),DISP=SHR,FREE=CLOSE            
//HASPLIST DD  DDNAME=IEFRDER                                           
 
All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
order) 3120, 3120, 3120, 3120, 6160, 6160.

Any help in this matter would be appreciated.

Trevor Cook
attcan!bdofed!cook
(416) 394-7181

cook@bdofed.UUCP (b) (07/27/89)

This article probably constitutes misuse of this news group (apologies)
but it is the only forum of IBM systems programmers that I have access to.
Is there a more appropriate news group that perhaps I am not getting in
my feed?

On to the subject at hand.  I am a systems programmer responsible for a
4381 running MVS/SP and JES2 1.3.6 . For a long time we have been
experiencing a problem with JES2 that no one has been able to explain or
solve. Occasionally when a proc has been updated in or added to one of the
proclibs, batch jobs encounter problems accessing the proc. The job either
gets the old copy of the proc, or, in the case of a new proc, gets the error
message "I/O ERROR READING PROCLIB".

The only way we know of to straighten this problem out is to stop JES2 and
hot start it. This is not a great thing to be doing in the middle of the
day!! ISC have carried this problem all the way to the JES2 development team
without any success. Does anyone have any ideas or suggestions?

Here are some details that may aid the diagnosis:

We run the following OEM products; ACF2, TLMS and FDR/ABR (being replaced
by DFHSM!).

The JES2 proc is;

//JES2    PROC MEMBER=JES2PARM,ALTMEM=JES2PARM
//IEFPROC EXEC PGM=HASJES20,DPRTY=(15,15),TIME=1440,PERFORM=9
//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000
//         DD  DSN=SYS1.PROCLIB,DISP=SHR
//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007
//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005
//HASPPARM DD  DSN=SYS1.JESPARMS(&MEMBER),DISP=SHR,FREE=CLOSE
//ALTPARM  DD  DSN=SYS1.PARMLIB(&ALTMEM),DISP=SHR,FREE=CLOSE
//HASPLIST DD  DDNAME=IEFRDER

All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
order) 3120, 3120, 3120, 3120, 6160, 6160.

Any help in this matter would be appreciated.

Trevor Cook
attcan!bdofed!cook
(416) 394-7181

" Maynard) (07/28/89)

In article <129@bdofed.UUCP> cook@bdofed.UUCP (b) writes:
>Occasionally when a proc has been updated in or added to one of the 
>proclibs, batch jobs encounter problems accessing the proc. The job either 
>gets the old copy of the proc, or, in the case of a new proc, gets the error
>message "I/O ERROR READING PROCLIB". 

This looks like an extent being added to the library in the middle...
except that your primary allocation only rules that out.

>The only way we know of to straighten this problem out is to stop JES2 and 
>hot start it. This is not a great thing to be doing in the middle of the
>day!! ISC have carried this problem all the way to the JES2 development team
>without any success. Does anyone have any ideas or suggestions?

Actually, issuing $PJES2,ABEND and then restarting it, isn't that
disruptive if your JES2 starts up reasonably quickly. The only effect
that users will notice is that their SUBMITs and LOGONswill take a bit
longer.

>//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000          
>//         DD  DSN=SYS1.PROCLIB,DISP=SHR                                
>//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013       
>//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013     
>//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007      
>//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005      
>All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
>order) 3120, 3120, 3120, 3120, 6160, 6160.

Looks like you've done everything right here...what's in
SYS1.EBE.PROCLIB? Hopefully, not much. You might run the BLKSIZE
parameter on the first card up to 20480, just to take better advantage
of the pages allocated to the buffers, but that's a nit.

Good question. Has me stumped. I guess you've APARed it...

-- 
Jay Maynard, EMT-P, K5ZC, PP-ASEL   | Never ascribe to malice that which can
uucp:        uunet!nuchat!   (eieio)| adequately be explained by stupidity.
{attctc,bellcore}!texbell!splut!jay +----------------------------------------
internet: jay@splut.conmicro.com    | "He's T*d, Jim."-Richard "Bones" Sexton

' Maynard) (07/28/89)

In article <129@bdofed.UUCP> cook@bdofed.UUCP (b) writes:
>Occasionally when a proc has been updated in or added to one of the
>proclibs, batch jobs encounter problems accessing the proc. The job either
>gets the old copy of the proc, or, in the case of a new proc, gets the error
>message "I/O ERROR READING PROCLIB".

This looks like an extent being added to the library in the middle...
except that your primary allocation only rules that out.

>The only way we know of to straighten this problem out is to stop JES2 and
>hot start it. This is not a great thing to be doing in the middle of the
>day!! ISC have carried this problem all the way to the JES2 development team
>without any success. Does anyone have any ideas or suggestions?

Actually, issuing $PJES2,ABEND and then restarting it, isn't that
disruptive if your JES2 starts up reasonably quickly. The only effect
that users will notice is that their SUBMITs and LOGONswill take a bit
longer.

>//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000
>//         DD  DSN=SYS1.PROCLIB,DISP=SHR
>//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
>//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
>//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007
>//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005
>All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
>order) 3120, 3120, 3120, 3120, 6160, 6160.

Looks like you've done everything right here...what's in
SYS1.EBE.PROCLIB? Hopefully, not much. You might run the BLKSIZE
parameter on the first card up to 20480, just to take better advantage
of the pages allocated to the buffers, but that's a nit.

Good question. Has me stumped. I guess you've APARed it...

--
Jay Maynard, EMT-P, K5ZC, PP-ASEL   | Never ascribe to malice that which can
uucp:        uunet!nuchat!   (eieio)| adequately be explained by stupidity.
{attctc,bellcore}!texbell!splut!jay +----------------------------------------
internet: jay@splut.conmicro.com    | "He's T*d, Jim."-Richard "Bones" Sexton

jbeard@quintus.UUCP (Jeff Beard) (07/28/89)

Last time I looked, concatenated data sets should be of the same BLOCKSIZE,
OR equal LRECL with the largest BLOCKSIZE being first in the list of
concatenation.

X040BK@TAMVM1.BITNET (Butch Kemper) (07/28/89)

The problem is caused by the dataset going into a new extent that wasn't
present when the datasets were opened.  The circumvention is to:

      1.  Allocate the datasets so there are only primary allocations
          and no secondary allocations.

      2.  When the dataset get full, quiesce JES2 so that no jobs are
          going through JCL conversion and then compress the proclib.

Butch

   Computing Services Center           X040BK@TAMVM1.BITNET
   Texas A&M University                X040BK@TAMVM1.TAMU.EDU
   College Station, Tx 77843-3142      409/845-4215

jcmorris@mbunix.mitre.org (Joseph C. Morris) (07/29/89)

In a recent article cook@bdofed writes:
>
>       Occasionally when a proc has been updated in or added to one of the
>proclibs, batch jobs encounter problems accessing the proc. The job either
>gets the old copy of the proc, or, in the case of a new proc, gets the error
>message "I/O ERROR READING PROCLIB".

Are you sure that there are no secondary allocations?  The symptoms you 
describe match what would occur if the replacement of a member caused the
library to go into secondary allocation.  Since the DEB is built at OPEN
time (meaning JES startup) any extents created later will be beyond the
legal limits enforced by the DEB as seen by JES.  This would be consistent
with your reported symptoms since they go away if you restart JES.  The
existence of the secondary extents might be masked if you have a routine
degassing procedure which releases vacated secondary extents.

You can test this by setting the secondary extent size (DS1SCALO, I think)
to zero; this will cause an abend of any task which runs past the end of
the primary allocation.  

It's been a few years since I've worked with MVS, but I do recall having the
same symptoms as you are seeing.  Good luck.

jcmorris@MBUNIX.MITRE.ORG ("Joseph C. Morris") (07/29/89)

In a recent article cook@bdofed writes:
>
>       Occasionally when a proc has been updated in or added to one of the
>proclibs, batch jobs encounter problems accessing the proc. The job either
>gets the old copy of the proc, or, in the case of a new proc, gets the error
>message "I/O ERROR READING PROCLIB".

Are you sure that there are no secondary allocations?  The symptoms you
describe match what would occur if the replacement of a member caused the
library to go into secondary allocation.  Since the DEB is built at OPEN
time (meaning JES startup) any extents created later will be beyond the
legal limits enforced by the DEB as seen by JES.  This would be consistent
with your reported symptoms since they go away if you restart JES.  The
existence of the secondary extents might be masked if you have a routine
degassing procedure which releases vacated secondary extents.

You can test this by setting the secondary extent size (DS1SCALO, I think)
to zero; this will cause an abend of any task which runs past the end of
the primary allocation.

It's been a few years since I've worked with MVS, but I do recall having the
same symptoms as you are seeing.  Good luck.

X040BK@TAMVM1.BITNET (Butch Kemper) (07/29/89)

I had some problems sending my original reply and I don't know if it
made it through.  So here it is again:




The problem is caused by the dataset going into a new extent that wasn't
present when the datasets were opened.  The circumvention is to:

      1.  Allocate the datasets so there are only primary allocations
          and no secondary allocations.

      2.  When the dataset get full, quiesce JES2 so that no jobs are
          going through JCL conversion and then compress the proclib.

Butch

   Computing Services Center           X040BK@TAMVM1.BITNET
   Texas A&M University                X040BK@TAMVM1.TAMU.EDU
   College Station, Tx 77843-3142      409/845-4215

bdb@becker.UUCP (Bruce Becker) (07/30/89)

In article <8907271812.AA19235@jade.berkeley.edu> b <mailrus!jarvis.csri.toronto.edu!utgpu!attcan!bdofed!cook@TUT.CIS.OHIO-ST> writes:
| [...]
|The JES2 proc is;
|
|//JES2    PROC MEMBER=JES2PARM,ALTMEM=JES2PARM
|//IEFPROC EXEC PGM=HASJES20,DPRTY=(15,15),TIME=1440,PERFORM=9
|//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000
|//         DD  DSN=SYS1.PROCLIB,DISP=SHR
|//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
|//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
|//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007
|//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005
| [...]
|All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
|order) 3120, 3120, 3120, 3120, 6160, 6160.

	I think you should be saying  "DCB=BUFLEN=20000" on the
	//PROC00 line.

	Changing the BLKSIZE will indeed cause i/o errors since
	the read will expect 20000 bytes but will only get 3120
	whenever a SYS1.EBE.PROCLIB block is accessed.

Cheers,
-- 
   __	 Bruce Becker	Toronto, Ont.
w \cc/	 Internet: bdb@becker.UUCP, bruce@gpu.utcs.toronto.edu
 `/\/-e	 BitNet:   BECKER@HUMBER.BITNET
_<  >_	 "Mistah Kaldis, he T*d" - A Popsicle Now

bdb@becker.UUCP (Bruce Becker) (07/30/89)

In article <8907271812.AA19235@jade.berkeley.edu> b
        <mailrus!jarvis.csri.toronto.edu!utgpu!attcan!bdofed!cook@TUT.CIS.OHIO-S
        writes:
| [...]
|The JES2 proc is;
|
|//JES2    PROC MEMBER=JES2PARM,ALTMEM=JES2PARM
|//IEFPROC EXEC PGM=HASJES20,DPRTY=(15,15),TIME=1440,PERFORM=9
|//PROC00   DD  DSN=SYS1.EBE.PROCLIB,DISP=SHR,DCB=BLKSIZE=20000
|//         DD  DSN=SYS1.PROCLIB,DISP=SHR
|//         DD  DSN=OKPROD.PROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
|//         DD  DSN=OKPROD.MSPROC,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE013
|//         DD  DSN=PROD.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE007
|//         DD  DSN=TEST.PROCLIB,DISP=SHR,UNIT=SYSDA,VOL=SER=EBE005
| [...]
|All of the proclibs are PRIMARY allocation only. Their blocksizes are (in
|order) 3120, 3120, 3120, 3120, 6160, 6160.

        I think you should be saying  "DCB=BUFLEN=20000" on the
        //PROC00 line.

        Changing the BLKSIZE will indeed cause i/o errors since
        the read will expect 20000 bytes but will only get 3120
        whenever a SYS1.EBE.PROCLIB block is accessed.

Cheers,
--
   __    Bruce Becker   Toronto, Ont.
w \cc/   Internet: bdb@becker.UUCP, bruce@gpu.utcs.toronto.edu
 `/\/-e  BitNet:   BECKER@HUMBER.BITNET
_<  >_   "Mistah Kaldis, he T*d" - A Popsicle Now

LDW@USCMVSA.BITNET (Leonard D Woren) (07/31/89)

I think a more appropriate list for this problem is JES2-L.  To
subscribe, send mail to LISTSERV@NDUVM1.BITNET with a message body of:
     sub JES2-L to LISTSERV@NDSUVM1.BITNET
There are a lot of JES2 experts on that list.

> Are you sure that there are no secondary allocations?  The symptoms you
> describe match what would occur if the replacement of a member caused the
> library to go into secondary allocation.  Since the DEB is built at OPEN
> time (meaning JES startup) any extents created later will be beyond the
> legal limits enforced by the DEB as seen by JES.  This would be consistent
> with your reported symptoms since they go away if you restart JES.
>
> You can test this by setting the secondary extent size (DS1SCALO, I think)
> to zero; this will cause an abend of any task which runs past the end of
> the primary allocation.

Well, not quite.  If a job has SPACE=(xxx,(..,nn)) on the DD
statement, and another extent is needed, one of type xxx and size nn
will be obtained.  If SPACE is on the DD, the secondary allocation in
the DSCB is ignored, regardless of whether it's 0.

JES2 will close and re-open the proclib if you switch proclib dd's by
submitting a job with /*JOBPARM P=PROCnn, where nn is different than
the last one used by the converter.  This is rather simpler than
restarting JES2.

Leonard D. Woren
Senior MVS Systems Programmer
<LDW@USCMVSA.BITNET>  <LDW@MVSA.USC.EDU>
University of Southern California

LDW@USCMVSA.BITNET (Leonard D Woren) (07/31/89)

My brain was out of order when I sent my previous reply.  Here's what
it should have said:

I think a more appropriate list for this problem is JES2-L.  To
subscribe, send mail to LISTSERV@NDUVM1.BITNET with a message body of:
     sub JES2-L your name

jbeard@quintus.UUCP (Jeff Beard) (07/31/89)

>If SPACE is on the DD, the secondary allocation in the DSCB is ignored, 
>regardless of whether it's 0

I'm not sure of this with current levels of JES/ MVS, however, back with MVS/SP
an prior systems, DSCB with zero secondary space can NEVER be extended.
Original DD allocations like SPACE=(Quantum,(Pri,Sec,1)), allow subsequent JCL
overrides of SPACE=(Quantum,(Pri,Sec,NN)), while DSCBs with secondarys of zero
will ignore the JCL override attempt.

I concur that the symptoms match that of a new extent being taken when updated,
and not seen when referenced.  This is a behavior that reflects the underpinning
OS/360 PCP/MFT/MVT origins of the system.

jbeard@quintus.UUCP (Jeff Beard) (07/31/89)

>If SPACE is on the DD, the secondary allocation in the DSCB is ignored,
>regardless of whether it's 0

I'm not sure of this with current levels of JES/ MVS, however, back with MVS/SP
an prior systems, DSCB with zero secondary space can NEVER be extended.
Original DD allocations like SPACE=(Quantum,(Pri,Sec,1)), allow subsequent JCL
overrides of SPACE=(Quantum,(Pri,Sec,NN)), while DSCBs with secondarys of zero
will ignore the JCL override attempt.

I concur that the symptoms match that of a new extent being taken when updated,
and not seen when referenced.  This is a behavior that reflects the underpinning
OS/360 PCP/MFT/MVT origins of the system.

dandrews@rtmvax.UUCP (David Andrews) (08/05/89)

From article <2792@splut.conmicro.com>, by jay@splut.conmicro.com (Jay "you
        ignorant splut!" Maynard):
> Actually, issuing $PJES2,ABEND and then restarting it, isn't that
> disruptive if your JES2 starts up reasonably quickly. The only effect
> that users will notice is that their SUBMITs and LOGONswill take a bit
> longer.

Unfortunately, there are some products (e.g. INTERACT) which do cross-memory
stuff into the JES2 address space and get really confused when JES2 bounces.
You have to bounce INTERACT, too.

And just WHERE in the Usenet is there an MVS newsgroup?

- Dave

dandrews@rtmvax.UUCP (David Andrews) (08/05/89)

From article <2792@splut.conmicro.com>, by jay@splut.conmicro.com (Jay "you ignorant splut!" Maynard):
> Actually, issuing $PJES2,ABEND and then restarting it, isn't that
> disruptive if your JES2 starts up reasonably quickly. The only effect
> that users will notice is that their SUBMITs and LOGONswill take a bit
> longer.

Unfortunately, there are some products (e.g. INTERACT) which do cross-memory
stuff into the JES2 address space and get really confused when JES2 bounces.
You have to bounce INTERACT, too.

And just WHERE in the Usenet is there an MVS newsgroup?

- Dave