IBM Support

What are the mustgather when a dataset is locked by RDz/IDz/zExplorer?

Question & Answer


Question

What data and logs could be collected when a dataset is locked by Rational Developer for z Systems (RDz) or IBM Developer for z Systems (IDz) or IBM Explorer for z/OS (zExplorer)?

Answer

RDz/IDz operator command DISPLAY OWNER

The first action will be to verify if RDz/IDz knows about the lock using operator command DISPLAY OWNER, see https://www.ibm.com/support/knowledgecenter/SSBDYH_3.0.1/com.ibm.zexpl.config.hostconfig.doc/topics/HCHCQS_modifyfrsed.html?pos=2

For example if member USER182.LABS.COBOL(HELLO) is being edited in COBOL Editor in IDz:

 F RSED,APPL=D O,DSN=USER182.LABS.COBOL(HELLO)           
 +FEK217I USER182.LABS.COBOL(HELLO) is locked by user182    


GRS operator command

It is important to understand what "lock" is being held and by what TCB/thread with GRS,RES command

For example:

 D GRS,RES=(*,USER182.LABS.COBOL*)                                       
 ISG343I 05.02.29 GRS STATUS 300                                         
 S=SYSTEMS SPFEDIT  USER182.LABS.COBOL                          HELLO T  
 SYSNAME        JOBNAME         ASID     TCBADDR   EXC/SHR    STATUS     
 CTFMVS08  RS030403           010B       005BF378 EXCLUSIVE    OWN 
 S=SYSTEM  SYSDSN   USER182.LABS.COBOL                                   
 SYSNAME        JOBNAME         ASID     TCBADDR   EXC/SHR    STATUS     
 CTFMVS08  RS030403           010B       005F8588   SHARE      OWN       

In the above example, we see that member HELLO is locked (EXCLUSIVE) by ASID x'010B and TCB 005BF378.

RESERVE on PDS can also be see with GRS command: D GRS,E,C

IDz DISPLAY PROCESS command

IDz operator command DISPLAY PROCESS,DETAIL can tell us the process id (PID) for this address space id:

 F RS03040,APPL=D P,D                
 BPXM023I (DEV040) 326
 
  ProcessId(411     ) ASId(010B) JobName(RS030403) Order(2)   
   PROCESS LIMITS:    CURRENT  HIGHWATER      LIMIT           
    JAVA HEAP USAGE(%)      0          5        100           
    CLIENTS                 1          1         30                          


DISPLAY OMVS command

Command DISPLAY OMVS or IDz DISPLAY CPU will show the TCB/Thread owning the lock:

  D OMVS,PID=411                                                         
  BPXO070I 05.15.01 DISPLAY OMVS 328                                     
  OMVS     000F ACTIVE             OMVS=(78)                             
  USER     JOBNAME  ASID        PID       PPID STATE   START     CT_SECS 
  DEV040   RS030403 010B        411        413 HK------ 18.05.48    34.3 
    LATCHWAITPID=         0 CMD=java -Xbootclasspath/p:/svt/hop/v40.0/us 
   THREAD_ID        TCB@     PRI_JOB  USERNAME   ACC_TIME SC  STATE      
   11CC680000000000 005F80D8 OMVS                    .023 IPT  KU        
   11CC900000000001 005C9420 OMVS                    .180 RCV JF         
   TAG=1/ThreadPoolProcess                                               
   11CC980000000002 005C9200                         .001 PTX JRNV       
   ...
   0EFEE800000009F0 005C2BF8                         .001 STE JRNV
   11C79800000009F4 005BF378          USER182        .001 WRT JR V
   TAG=UserLockThread                                             
   0EFEF800000009F5 005BF1E0          USER182        .003 CLO JRNV
   TAG=2787/RequestAggregatorThread                               
   ...

Lock is held by thread UserLockThread by user USER182.


Generate a javacore dump

A javacore dump will show the stack of the thread holding the lock. Use IDz operator command:

 F RSED,APPL=DEBUG JC,PID=<process id>
 

For example:

 F RS03040,APPL=DEBUG JC,PID=411 
 

joblog or syslog will show a message like:

 F RS03040,APPL=DEBUG JC,PID=411                                     
 BPXM023I (DEV040) 919                                                  
 JVMDUMP034I User requested Java dump using '/tmp/javacore.20180328.031 
 455.411.0001.txt' through com.ibm.jvm.Dump.JavaDump 
                 

In case of abend 213-30

Command GRS,DEV command can also show RESERVE enqueue on a PDS.

For example with error message for abend 213-30: IEC813I PDS OWNER: JN=USER1821,SYSNAME=CTFMVS08,TCB=005FE990,ASID=0059 IEC143I 213-30,IFG0194D,RS030403,STEP1,SYS11162,0251,CSPL02, 024
MY.PDS.COBOL

The volume for this PDS is CSPL02.

Command D U,VOL will give us the device number for this volume:

 D U,VOL=CSPL02 
 IEE457I 15.02.12 UNIT STATUS 627 
 UNIT TYPE STATUS        VOLSER     VOLSTATE 
 0251 3390 A    -R       CSPL02     PRIV/RSDNT 

Command D GRS,DEV will indicate if a reserve is active on this device:

 D GRS,DEV=0251 
 ISG343I 15.06.49 GRS STATUS 638 
 DEVICE:0251 VOLUME:CSPL02 RESERVED BY SYSTEM CTFMVS08 
 S=SYSTEMS SPFEDIT  MY.PDS.COBOL 
 SYSNAME        JOBNAME         ASID     TCBADDR   EXC/SHR   STATUS 
 CTFMVS08  RSE31851           00DB       005C1C68 EXCLUSIVE   OWN 






[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSJK49","label":"IBM Developer for z Systems"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSJK49","label":"IBM Developer for z Systems"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
27 October 2020

UID

dwa1434011