home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!cis.ohio-state.edu!ucbvax!SATURN.GSI.WTZA-BERLIN.DE!scheible
- From: scheible@SATURN.GSI.WTZA-BERLIN.DE (manfred scheible)
- Newsgroups: comp.os.vms
- Subject: Problem with RMS Recovery Unit Journaling
- Message-ID: <9209021335.AA01737@saturn.gsi.wtza-berlin.de>
- Date: 2 Sep 92 13:35:31 GMT
- Sender: daemon@ucbvax.BERKELEY.EDU
- Distribution: world
- Organization: The Internet
- Lines: 236
-
- In the following small program, I will demonstrate the occurance
- of an error in RMS Journaling for VMS Version 5.4. I have told
- my problem to DIGITAL Service Center. The answer was:
-
- .
- .
- .
- "The VMS V5.4 behavior is consistent with the idea of
- streams as 'accessors'".
- .
- .
- .
- "The application evidently was build around the VMS 5.1 behavior,
- but we beleave that behavior was corrected around 1987. The old
- behavior would mean that Stream B and Stream A were not independent
- accessesors".
- .
- .
- .
- "Engineering requests closure of this CLD".
-
- This answer is true for $DELETE, but not for $PUT and $UPDATE.
- There, a second stream can access a new record in the same recovery
- unit.
-
- Who has similar problems?
-
- Please send replies to info-vax!
-
-
- Manfred Scheible
-
- mail: scheible@saturn.gsi.wtza-berlin.de
- fax: +49-30-60901-100
-
-
- Example:
-
- $! RMSJNL should be licensed.
- $
- $ macro sys$input /obj=rmsjnl_err
-
- .TITLE RMSJNL_ERR
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;
- ; Title: A deleted record in a Recovery Unit is readable
- ; in a second stream.
- ;
- ; Product: RMSJNL V5.4-2
- ;
- ;
- ; Sequence:
- ;
- ; (1) SYS$START_RU
- ; (2) SYS$GET (Stream A) using primary key with rop = rlk
- ; (3) SYS$DELETE (Stream A)
- ; (4) SYS$GET (Stream B) using alternate key with rop = nlk
- ; (5) SYS$END_RU
- ;
- ; In step (4) I try to access a record deleted in step (3).
- ; Step (4) finished unexpected with success. In VMS Version 5.1
- ; I have never seen this behavior before. There are no documentation
- ; hints about changes in behavior of RMS calls using RU Journaling.
- ;
- ; after step (4) the status is
- ; in VMS 5.1-x RMS$_RNF (%RMS-E-RNF)
- ; in VMS 5.4-2 RMS$_OK_RLK (%RMS-S-OK_RLK)
- ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; MACROS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- ; Error check:
-
- .MACRO CHECK,P1=0,?L1
- CMPL R0,#RMS$_NORMAL
- BEQL L1
- CMPL R0,#SS$_NORMAL
- BEQL L1
- MOVL R0,COND1
- MOVL P1,COND2
- $PUTMSG_S MSGVEC=VECTOR
- L1:
- .ENDM
-
- ; Text output:
-
- .MACRO WRITE STRING=<>,?STR,?SKIP
- JMP SKIP
- STR: .ASCID /STRING/
- SKIP: PUSHAL STR
- CALLS #1,G^LIB$PUT_OUTPUT
- .ENDM
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .PSECT DATA,LONG
-
- RU_HANDLE: .LONG 0
- TID: .BLKB 16
-
- IOSB: .BLKB 8
-
- VECTOR: .LONG 2
- COND1: .LONG 0
- COND2: .LONG 0
-
- KEY0: .ASCII /BBBBBBBBBB/
- KEY1: .ASCII /2222222222/
- RECORD: .BLKB 20
-
- .ALIGN LONG
-
- FAB: $FAB -
- FNM=<RMSJNL_ERR.DAT>,- ; File name
- ORG=IDX,-
- FAC=<DEL,GET,PUT,UPD>,- ; Complete access
- SHR=<DEL,GET,PUT,UPD,MSE> ; Complete sharing
-
- RAB0: $RAB -
- FAB=FAB,- ; Associated FAB
- RAC=KEY,- ; Key access
- ROP=<RLK>,- ; Options
- KRF=0,- ; Key offset
- KSZ=10,- ; Key size
- KBF=KEY0,- ; Key buffer
- USZ=20,- ; Size of user buffer
- UBF=RECORD ; User buffer
-
- RAB1: $RAB -
- FAB=FAB,- ; Associated FAB
- RAC=KEY,- ; Key access
- ROP=<NLK>,- ; Options
- KRF=1,- ; Key offset
- KSZ=10,- ; Key size
- KBF=KEY1,- ; Key buffer
- USZ=20,- ; Size of user buffer
- UBF=RECORD ; User buffer
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; CODE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .PSECT CODE,NOWRT,LONG
-
- .ENTRY RMSJNL_ERR,0
-
- ;;; INIT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- WRITE <*** $OPEN>
- $OPEN FAB=FAB
- CHECK FAB+FAB$L_STV
-
- WRITE <*** $CONNECT stream A>
- $CONNECT RAB=RAB0
- CHECK RAB0+RAB$L_STV
-
- WRITE <*** $CONNECT stream B>
- $CONNECT RAB=RAB1
- CHECK RAB1+RAB$L_STV
-
- ;;; TEST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- WRITE <*** $START_RU> ;
- $START_RU_S RU_HANDLE=RU_HANDLE ; (1)
- CHECK ;
-
- ;;; WRITE <*** $START_TRANSW>
- ;;; $START_TRANSW_S IOSB=IOSB,TID=TID
- ;;; CHECK
-
- WRITE <*** $GET using key 0> ;
- $GET RAB=RAB0 ; (2)
- CHECK RAB0+RAB$L_STV ;
-
- WRITE <*** $DELETE> ;
- $DELETE RAB=RAB0 ; (3)
- CHECK RAB0+RAB$L_STV ;
-
- WRITE <*** $GET using key 1> ;
- $GET RAB=RAB1 ; (4)
- CHECK RAB1+RAB$L_STV ;
-
- WRITE <*** $ABORT_RU> ;
- $ABORT_RU_S RU_HANDLE=RU_HANDLE ; (5)
-
- ;;; WRITE <*** $ABORT_TRANSW>
- ;;; $ABORT_TRANSW_S IOSB=IOSB,TID=TID
-
- ;;; FINISH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- WRITE <*** $CLOSE>
- $CLOSE FAB=FAB
- CHECK FAB+FAB$L_STV
-
- RET
-
- .END RMSJNL_ERR
- $ link rmsjnl_err
- $
- $ create /fdl=sys$input
-
- FILE
- NAME RMSJNL_ERR.DAT
- ORGANIZATION indexed
-
- RECORD
- FORMAT fixed
- SIZE 20
-
- KEY 0
- TYPE string
- SEG0_LENGTH 10
- SEG0_POSITION 0
-
- KEY 1
- TYPE string
- DUPLICATES yes
- CHANGES yes
- SEG0_LENGTH 10
- SEG0_POSITION 10
- $
- $ open /read /write fff RMSJNL_ERR.DAT
- $ write fff "AAAAAAAAAA1111111111"
- $ write fff "BBBBBBBBBB2222222222"
- $ write fff "CCCCCCCCCC3333333333"
- $ close fff
- $
- $ set file RMSJNL_ERR.DAT /ru_jour
-
-
-