T.R | Title | User | Personal Name | Date | Lines |
---|
4142.1 | alternative(?) | CPEEDY::KENNEDY | Steve Kennedy | Mon Feb 03 1997 16:32 | 64 |
| .0> They'd like a detailed explanation as to why it seems to only break
.0> PATHWORKS.
This type of definition doesn't only break PATHWORKS ... seems file
access to DCL trying to use the logical name doesn't work either:
mgoblu> sh dev dka300
Device Device Error Volume Free Trans Mnt
Name Status Count Label Blocks Count Cnt
MGOBLU$DKA300: Mounted 0 WORK1 1089561 73 1
mgoblu> define/system/exec/nolog DKA300 DKA300:
mgoblu> dli dka300:[000000]*.*
%DIRECT-E-OPENIN, error opening DKA300:[000000]*.* as input
-RMS-F-LNE, logical name translation error
mgoblu> deassign/system/exec DKA300
mgoblu> dli dka300:[000000]*.*
Directory DKA300:[000000]
BACKUP.SYS;1 0/0 20-SEP-1996 10:11:05.45
BADBLK.SYS;1 0/0 20-SEP-1996 10:11:05.45
BADLOG.SYS;1 0/0 20-SEP-1996 10:11:05.45
BITMAP.SYS;1 107/108 20-SEP-1996 10:11:05.45
CONTIN.SYS;1 0/0 20-SEP-1996 10:11:05.45
CORIMG.SYS;1 0/0 20-SEP-1996 10:11:05.45
INDEXF.SYS;1 24426/24426 20-SEP-1996 10:11:05.45
SECURITY.SYS;1 1/6 20-SEP-1996 10:11:05.45
VOLSET.SYS;1 0/0 20-SEP-1996 10:11:05.45
Total of 9 files, 24534/24540 blocks.
=-=-=-=-=-=-=-=-=-=-=-=-=
Is that really the format needed? I'm not sure how PATHWORKS would
handle it, but could they use the following definition format instead:
$ define/system/exec dsa500 _dsa500:
The above at least doesn't break DCL:
mgoblu> define/system/exec/nolog DKA300 _DKA300:
mgoblu> dli dka300:[000000]*.*
Directory _DKA300:[000000]
BACKUP.SYS;1 0/0 20-SEP-1996 10:11:05.45
BADBLK.SYS;1 0/0 20-SEP-1996 10:11:05.45
BADLOG.SYS;1 0/0 20-SEP-1996 10:11:05.45
BITMAP.SYS;1 107/108 20-SEP-1996 10:11:05.45
CONTIN.SYS;1 0/0 20-SEP-1996 10:11:05.45
CORIMG.SYS;1 0/0 20-SEP-1996 10:11:05.45
INDEXF.SYS;1 24426/24426 20-SEP-1996 10:11:05.45
SECURITY.SYS;1 1/6 20-SEP-1996 10:11:05.45
VOLSET.SYS;1 0/0 20-SEP-1996 10:11:05.45
Total of 9 files, 24534/24540 blocks.
=-=-=-=-=-=-=-=-=-=-=-=-=
Perhaps PATHWORKS would also handle it correctly in this case? (sorry,
I don't have time to test it out).
\steve
|
4142.2 | Learn somethin' new every day... | VMSNET::P_NUNEZ | | Tue Feb 04 1997 10:11 | 25 |
|
Appreciate the time you spent on this, Steve...it was the wake up call
I needed ;0)
I've been doing testing all morning and am seeing some very interesting
results. I'll be back when I've completed my testing, but for now
suffice to say you CAN make it work using /TRANSLATION=CONCEALED
AS LONG AS THE PHYSICAL DEVICE REFERENCE INCLUDES THE LEADING UNDERSCORE
These work (sorta, more on that later ;o):
$ DEFINE/SYSTEM/EXEC/TRANS=CONCEALED DKA300 _DKA300:
$ DEFINE/SYSTEM/EXEC DKA300 _DKA300:
These don't work:
$ DEFINE/SYSTEM/EXEC/TRANS=CONCEALED DKA300 DKA300:
$ DEFINE/SYSTEM/EXEC DKA300 DKA300:
But I see problems reported in lmsrv log and event log on certain
operations, despite those operations completing successfully.
Paul
|
4142.3 | | CPEEDY::FLEURY | | Tue Feb 04 1997 11:26 | 21 |
| RE: .2
Paul,
I suspect a few things are happening behind the scenes here.
1) The _ character has some history from early versions of VMS where it
was used as the indicator of a device. Many applications searched
the result of a logical name translation for this character as an
indicator of when to stop translating.
2) The /TRANS=CONCEALED has no meaning here. Perhaps /TRANS=TERM might
work as this would prevent further iterations of translation.
3) The failure is due to the detection by the SYS$TRNLNM service of the
circular reference. Any "modern" application which uses the TRNLMN
service rather than the obsolete TRNLOG service would probably see
the same problem. Older applications which use the TRNLOG jacket
"hide" the problem via the jacket.
Dan
|
4142.4 | Official Support Statement? | VMSNET::P_NUNEZ | | Tue Feb 04 1997 11:50 | 8 |
|
Based on Dan's .3 reply, I guess I gotta ask if we support using the
circular definition when the _ character is used? If we do, it
deserves at least a QAR for some minor problems I've run into thus far.
If not, I'll stop here and be done with this subject (hopefully once
and for all)...
Paul
|
4142.5 | Circuar logical definitions are not allowed | DUNKLE::MCDERMOTT | Chris McDermott - Software Janitorial Services | Tue Feb 04 1997 11:59 | 2 |
| That being said, $DEFINE FOO _FOO is not a circular definition. The underscore
(_) indicates that the name translations should not proceed any further.
|
4142.6 | No Circular=Supported? | VMSNET::P_NUNEZ | | Tue Feb 04 1997 12:23 | 7 |
|
Then if using the _ negates a circular definition, we shouldn't have
problems with it, eh?
Just want to be clear on what's allowed...
Paul
|
4142.7 | Back 2 steps, ahead 1 | VMSNET::P_NUNEZ | | Tue Feb 04 1997 14:19 | 19 |
|
Ok, time to back track a bit. I think I see where the customer came up
with the statement "Why does it seem to only affect PATHWORKS?".
The key, as Dan alluded to, is using /TRANSLATION_ATTRIBUTE=TERMINAL
instead of /TRANSLATION_ATTRIBUTE=CONCEALED
VMS ($ DIR command) has no problems when the logical is defined using
the former, yet PATHWORKS (pwrk$lmsrv) blows up on startup because it
can't translate the logical name PWRK$PRINT.
With that, can engineering provide an answer to the customer's question?
Also need a response regarding support for using the underscore to
avoid a circular logical name definition...
Paul
|
4142.8 | Lets start over | DUNKLE::MCDERMOTT | Chris McDermott - Software Janitorial Services | Wed Feb 05 1997 15:49 | 19 |
| I'm no longer sure what the question is.
If the question is:
>They'd like a detailed explanation as to why it seems to only break
>PATHWORKS.
As demonstrated, circularly defined logicals break more than PATHWORKS.
If not:
What exactly is the logical name the customer is having a problem with
(PWRK$PRINT?) and exactly how is it defined? To determine this please do
a SHOW LOGICAL/FULL on the offender.
Thanks,
Chris
|
4142.9 | | VMSNET::P_NUNEZ | | Thu Feb 06 1997 10:05 | 59 |
| Chris,
The logical is circular but defined with /trans=terminal which means
don't attempt to translate past this iteration. With /trans=terminal,
you CAN use the logical in DCL commands w/o problem. But even with the
logical defined /trans=terminal, PATHWORKS (pwrk$lmsrv) aborts during
startup (see errors from pwrk$lmsrv log below). It's easily
reproducible - find the disk where pwrk$commonroot is stored and define
a logical by the same name as the device:
$ define/system/exec/trans=term dev dev:
Paul
4-FEB-1997 12:42:56.47 0000056C:001E11C0 PFSResolveRootName: unable to
translate logical after 50 attempts!
PPS_jdb_open: Directory for PWRK$PRINT: does not exist
4-FEB-1997 12:42:56.63 0000056C:001E11C0 PPS Initialization failure:
Cannot read job database!
4-FEB-1997 12:42:56.63 0000056C:001E11C0 PANIC: aborting from module
LM$BLD_ROOT:[LM.SERVER.UTIL.SRC]PPS_UTIL.C;1 at line 105!
%SYSTEM-F-ABORT, abort
%TRACE-F-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
PPS_UTIL PPS_init 33712 00000077 00040D7F
MAIN fsp1$main 58195 00000298 000357D8
0011AE85 0011AE85
MTS$MAIN main 2972 0000001B 0003481F
================= EVENT #67 ==================
Event Time: 4-FEB-1997 12:42:56.62 Node: SWEETY
Process Id: 0000056C
Event: Initialization error
Event Source: Print Services (PPS)
Event Class: Error
Text: Cannot read job database
================= EVENT #68 ==================
Event Time: 4-FEB-1997 12:44:04.85 Node: SWEETY
Process Id: 00000563
Event: Unexpected System Error Encountered
Event Source: LAN Manager Utility
Event Class: Error
Status: %SYSTEM-F-ABORT, abort
Text: PWRK$LMSRV process terminated
We've always told customers you can't define a logical this way; up
until now they haven't pushed back. So I need to either explain why it
kills PATHWORKS (but is otherwise useable) or IPMT it so it gets fixed.
Paul
|
4142.10 | | CPEEDY::FLEURY | | Thu Feb 06 1997 10:41 | 31 |
| RE: .-1
Paul,
After examining the code, I think I can explain this a bit...
1) The Pathworks code does not make use of the recursive aspects of
logical name translation provided by OpenVMS. This is why the
/TRANS=TERMINAL has no effect.
2) The "_" character is stripped off.
3) The translations are done within a loop checking for a translation
failing or the number of translations exceeding a maximum.
4) Defining the circular translation as it is, results in Pathworks
continually attempting to translate DEV as the logical name.
5) Since DEV translates to DEV, the process goes on until the count is
exceeded.
To answer the as yet un asked question... No this can not easily be
changed. The easiest way to "fix" this is to use the define shown
below:
DEFINE dev _DEV:
Using the "_" should resolve this because of other code in this same
area which will detect the "_" and do the right thing.
Dan
|