View previous topic :: View next topic |
Author |
Message |
nex Beginner
Joined: 22 May 2003 Posts: 8 Topics: 4
|
Posted: Mon Sep 15, 2003 7:05 am Post subject: concurrent update |
|
|
What happens in case of concurrent update by multiple users for a sequential file , when that file is being used with DISP=SHR ?
How DISP=SHR is differnet from DISP=OLD in case of updating(writing) a sequential file ? |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Mon Sep 15, 2003 10:54 am Post subject: |
|
|
nex,
Any user who is updating the file should have DISP=OLD in their JCL.It gives an exclusive control of the file and no one else can access the file. Any user who is trying to access the file(disp=shr) will be in wait state until the job which is updating the file completes.
Sometimes users code disp=old even when they are just reading the file.This will not allow any other user to access the file.All the other jobs will be in wait state.
Hope this helps...
cheers
kolusu |
|
Back to top |
|
|
Cogito-Ergo-Sum Advanced
Joined: 15 Dec 2002 Posts: 637 Topics: 43 Location: Bengaluru, INDIA
|
Posted: Mon Sep 15, 2003 11:58 am Post subject: |
|
|
Kolusu,
Quote: | Any user who is trying to access the file(disp=shr) will be in wait state until the job which is updating the file completes. |
I have had the experience before. I do not think, a user (or, specifically, a job, as per my ecperiments) will wait until some other job completes processing. In my opinion, the data will be all corrupted; there is no guarantee which job will update when.
To test this, I set up this in a single member of my job PDS.
Code: |
//XXXXXXXB JOB ,NOTIFY=XXXXXXX
//*
//HELP EXEC PGM=SORT
//SYSIN DD *
OPTION COPY
/*
//SORTIN DD *
REC 1
REC 2
REC 3
REC 4
REC 5
/*
//SORTOUT DD DSN=XXXXXXX.DISPSHR.DS,
// DISP=SHR
//SYSOUT DD SYSOUT=*
//************************************
//**** SECOND JOB STARTS
//**** WILL EXECUTE SIMULTANOUESLY.
//**** NOTE THE EIGHT CHARACTER
//************************************
//XXXXXXXA JOB ,NOTIFY=XXXXXXX
//*
//HELP EXEC PGM=SORT
//SYSIN DD *
OPTION COPY
/*
//SORTIN DD *
REC 6
REC 7
REC 8
REC 9
REC 0
/*
//SORTOUT DD DSN=XXXXXXX.DISPSHR.DS,
// DISP=SHR
//SYSOUT DD SYSOUT=*
//*
|
In my first run, the output was,
Code: |
REC 1
REC 2
REC 3
REC 4
REC 5
|
In the next run, the following was the outoput,
Code: |
REC 6
REC 7
REC 8
REC 9
REC 0
|
Thus, in my opinion, there will not be any wait; but, data integrity goes for a sixer. _________________ ALL opinions are welcome.
Debugging tip:
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
-- Sherlock Holmes. |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Mon Sep 15, 2003 12:35 pm Post subject: |
|
|
Quote: |
Any user who is updating the file should have DISP=OLD in their JCL.It gives an exclusive control of the file and no one else can access the file. Any user who is trying to access the file(disp=shr) will be in wait state until the job which is updating the file completes.
|
Cogito: I specifically meant when one of the user codes disp=old while updating the dataset, then all other users who has disp=shr for the same file will be in the wait mode.
Kolusu |
|
Back to top |
|
|
slade Intermediate
Joined: 07 Feb 2003 Posts: 266 Topics: 1 Location: Edison, NJ USA
|
Posted: Mon Sep 15, 2003 1:53 pm Post subject: |
|
|
Just one minor clarifying note: if a SHR user job is already using the file, an OLD user job will not be scheduled until the SHR user job ends. So, who waits, depends on who had the file to begin with.
One other thing, though the topic is phys seq files: the VSAM shr options selected when a VSAM file is created will change the update characteristics of a VSAM file when DISP=SHR is used.
Regards, Jack. |
|
Back to top |
|
|
Cogito-Ergo-Sum Advanced
Joined: 15 Dec 2002 Posts: 637 Topics: 43 Location: Bengaluru, INDIA
|
Posted: Mon Sep 15, 2003 10:45 pm Post subject: |
|
|
Kolusu,
So, you meant, anyone who is accessing a file with DISP=SHR which is already being used with DISP=OLD elsewhere, will wait. I thought, the block of quote meant only for DISP=SHR between jobs. _________________ ALL opinions are welcome.
Debugging tip:
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
-- Sherlock Holmes. |
|
Back to top |
|
|
nex Beginner
Joined: 22 May 2003 Posts: 8 Topics: 4
|
Posted: Mon Sep 15, 2003 11:41 pm Post subject: |
|
|
Kolusu,
Does that mean , a user cannot update a file at all (either VSAM or sequential) on his end , using DISP=SHR ? |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Tue Sep 16, 2003 5:32 am Post subject: |
|
|
Cogito: Disp=old will grant an exclusive control of the file on the job and will not let others use the file. Open a PS file in EDIT MODE and in another session submit a job which copies the same dataset.The job will be in wait state untill you exit out of your edit mode.
Nex: You CAN update the file by coding disp=shr.
kolusu |
|
Back to top |
|
|
Cogito-Ergo-Sum Advanced
Joined: 15 Dec 2002 Posts: 637 Topics: 43 Location: Bengaluru, INDIA
|
Posted: Tue Sep 16, 2003 5:48 am Post subject: |
|
|
Yes, Sir. That is clear to me. _________________ ALL opinions are welcome.
Debugging tip:
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
-- Sherlock Holmes. |
|
Back to top |
|
|
nex Beginner
Joined: 22 May 2003 Posts: 8 Topics: 4
|
Posted: Mon Sep 22, 2003 10:00 am Post subject: |
|
|
Kolusu,
My question is still unanswered:
Quote: | What happens in case of concurrent update by multiple users for a sequential file , when that file is being used with DISP=SHR ? |
Specifically I want to know :
User1 is using the file for update with DISP=SHR and at the same time 2 more users are trying to access the file with DISP=SHR. User2 wants to update the file and User3 wants to just read the file.
Q-1 : Who will be able to update file: User1 or User2 ? Will there be any data corruption in this case or User2 will be able to update the file only after user1 has updated it ?
Q-2: What copy of file will user3 be able to read ; updated one or unupdated or updated till that time ? |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Mon Sep 22, 2003 11:07 am Post subject: |
|
|
Nex,
The final data is corrupted.To answer your questions specifically.
Both user1 and user2 will be able to update the file, but there is no gurantee that any of their individual updates will be reflected.
To illustrate this I had 3 jobs all running at the same time on a single file with a volume of 349,793
Job A was updating the bytes in position '1'
Job B was also updating the bytes in position '1' but with a different condition.
Job C is just reading the file.
I ran all the 3 jobs concurrently. I ran all the 3 jobs 4 times to see the pattern of results.The results vary for each run.
Job C sometimes picked up the updates of JOB A but not the updates of JOB B.sometimes JOb C did not read all the records at all. I was missing around 2800 records in the output.When ever I got all the records , I was missing JOb A updates.
JOB C is either reading the unupdated file or even reading the updated file from job B which in turn is overlaying the updates of A since JOb B is working on different condition.
So the final output is always corrupted. So avoid coding DISP=SHR when you really want to update.If you don't care about the integrity of the data then you can go ahead and code disp=shr
Hope this helps...
cheers
kolusu |
|
Back to top |
|
|
nex Beginner
Joined: 22 May 2003 Posts: 8 Topics: 4
|
Posted: Tue Sep 23, 2003 12:40 am Post subject: |
|
|
All I can say is , Kolusu is just Great.
Thanks a trillion Kolusu. |
|
Back to top |
|
|
bablack Beginner
Joined: 04 Dec 2002 Posts: 71 Topics: 0 Location: Little Falls, NJ
|
Posted: Tue Sep 23, 2003 2:24 pm Post subject: |
|
|
The IBM manual Using Data Sets has a chapter on sharing non-VSAM datasets and it makes it pretty clear that sequential datasets cannot be shared for update with DISP=SHR unless all programs doing the updates are coded to serialize the updates (using ENQs for the most part).
In z/OS 1.5, due out next year, IBM will ABEND the second user if it tries to OPEN a sequential dataset for OUTPUT with DISP=SHR if some other SHR user already has it open for OUTPUT. _________________ Bruce A. Black
Senior Software Developer
Innovation Data Processing |
|
Back to top |
|
|
pmcmull Beginner
Joined: 26 Nov 2003 Posts: 1 Topics: 0
|
Posted: Wed Nov 26, 2003 2:42 pm Post subject: |
|
|
Responding to original question:
It's bad practice. Shops that have standards won't let you use JCL statements like that in a production situation. User-submitted is of course another question. Updating should be done with OLD because it does control(eliminate) concurrent update. SHARE should be used for READ only. If fact I'm so used to the rule that my first reaction is that you can't update with SHARE disp.
If different jobs or users are creating data that is supposed to be combined, the usual practice where I am is to each catalog their own dataset, then combine the results to one dataset. Using sortcopy or whatever. |
|
Back to top |
|
|
bablack Beginner
Joined: 04 Dec 2002 Posts: 71 Topics: 0 Location: Little Falls, NJ
|
Posted: Wed Nov 26, 2003 6:01 pm Post subject: |
|
|
Quote: | It's bad practice. Shops that have standards won't let you use JCL statements like that in a production situation. User-submitted is of course another question. Updating should be done with OLD because it does control(eliminate) concurrent update. SHARE should be used for READ only. If fact I'm so used to the rule that my first reaction is that you can't update with SHARE disp. |
Not strictly true. Load libraries are normally updated with DISP=SHR so that other jobs can continue to execute programs from them. The linkage editor/binder uses a special ENQ/RESERVE to insure that only one program can be updated at a time. If you force them to use DISP=OLD when updating, then the load library could only be updated when noone was using it. Linklist libraries, which are normally ENQed by LLA, could never be updated.
but for datasets without this special protection, you are right. _________________ Bruce A. Black
Senior Software Developer
Innovation Data Processing |
|
Back to top |
|
|
|
|