sampsa at mac.com writes:
On 17 Jan 2013, at 16:02, Cory Smelosky <b4 at gewt.net> wrote:
On 17 Jan 2013, at 08:50, sampsa at mac.com wrote: > >> Strangely enough,
the procedures were working fine for almost the whole day but now I am
getting nothing - no errors, just no connections. >> >> What could cause
this? > > Did the target node crash? ;) > -
Not per se but the DECNET stack got into a pretty bad state - had to
reboot.
I've never had to reboot a VMS box for anything DECnet related.
Yeah, this is some weird interaction between Python and DECNET TASKs.
It refuses to start python, basically.
DECNET boxes seem pretty easy to DOS...
Poor application programming is not the fault of the system it runs on! ;)
A poor application program shouldn't take out the network stack :)
sampsa at mac.com writes:
On 17 Jan 2013, at 16:02, Cory Smelosky <b4 at gewt.net> wrote:
On 17 Jan 2013, at 08:50, sampsa at mac.com wrote: > >> Strangely enough,
the procedures were working fine for almost the whole day but now I am
getting nothing - no errors, just no connections. >> >> What could cause
this? > > Did the target node crash? ;) > -
Not per se but the DECNET stack got into a pretty bad state - had to
reboot.
I've never had to reboot a VMS box for anything DECnet related.
DECNET boxes seem pretty easy to DOS...
Poor application programming is not the fault of the system it runs on! ;)
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
Well I speak to machines with the voice of humanity.
$ HELP/MESSAGE LINKABORT
Perhaps, your python was attacked by a mongoose (unexpected exception)?
Tried that, have rebooted, still not working again?
This is so weird, it ran problem free for like 20 hours, then suddenly, boom, gone.
sampsa at mac.com writes:
Basically I just want some code that I can use to wrap some python code around, I was using this:
$@python_vms:setup
$Open/Read/Write net Sys$Net
$DEFINE/NOLOG SYS$OUTPUT net
$DEFINE/NOLOG SYS$COMMAND net
$DEFINE/NOLOG SYS$INPUT net
$python himproto.py
$close net
And it was working all day - suddenly I got Link aborted errors and now nothing. Any ideas?
$ HELP/MESSAGE LINKABORT
Perhaps, your python was attacked by a mongoose (unexpected exception)?
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
Well I speak to machines with the voice of humanity.
On 17 Jan 2013, at 16:02, Cory Smelosky <b4 at gewt.net> wrote:
On 17 Jan 2013, at 08:50, sampsa at mac.com wrote:
Strangely enough, the procedures were working fine for almost the whole day but now I am getting nothing - no errors, just no connections.
What could cause this?
Did the target node crash? ;)
-
Not per se but the DECNET stack got into a pretty bad state - had to reboot.
DECNET boxes seem pretty easy to DOS...
sampsa at mac.com writes:
Strangely enough, the procedures were working fine for almost the whole
day but now I am getting nothing - no errors, just no connections.
What could cause this?
Care to share the "procedures?"
Google NETSERVER$TIMEOUT. I DO NOT recommend you set logical globally as
it will affect *all* DECnet type tasks. You could, if you segregate your
procedure in a group, for example, be defined in a group table. Per job
might be a little trickier than you're ready to tackle.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
Well I speak to machines with the voice of humanity.
Basically I just want some code that I can use to wrap some python code around, I was using this:
$@python_vms:setup
$Open/Read/Write net Sys$Net
$DEFINE/NOLOG SYS$OUTPUT net
$DEFINE/NOLOG SYS$COMMAND net
$DEFINE/NOLOG SYS$INPUT net
$python himproto.py
$close net
And it was working all day - suddenly I got Link aborted errors and now nothing. Any ideas?
sampsa
On 17 Jan 2013, at 15:50, sampsa at mac.com wrote:
Strangely enough, the procedures were working fine for almost the whole day but now I am getting nothing - no errors, just no connections.
What could cause this?
sampsa
On 17 Jan 2013, at 09:12, Sampsa Laine <sampsa at mac.com> wrote:
Thanks for all the help guys - I think I'm pretty close to having all the stuff I need for my little client server project.
Sampsa
On 17 Jan 2013, at 08:57, G. wrote:
On Thu, 17 Jan 2013 02:52:59 +0200, you wrote:
OK, figured that out, I have to use an open to access it first.
IIRC, your procedure must open SYS$NET, no matter what it will possibly send
through it, even if it will not send anything back, because it is the opening
of SYS$NET that triggers the dispatching of the DECnet connect-confirm message
back from the target node to the originating one.
Just try a procedure that does a five minutes wait, but does not open SYS$NET,
and you'll see that the network will time out with an error way before five
minutes (and your procedure will be stopped). Then simply add the open of
SYS$NET before the wait command and you will see that it will work whatever
time you chose for the wait, i.e. it will not time out, because the connection
will be opened and confirmed both sides and both ways.
IIRC it's not even necessary to explicitly send something thru SYS$NET to
confirm the connection, just open it.
HTH, :)
G.
On 17 Jan 2013, at 08:50, sampsa at mac.com wrote:
Strangely enough, the procedures were working fine for almost the whole day but now I am getting nothing - no errors, just no connections.
What could cause this?
Did the target node crash? ;)
sampsa
On 17 Jan 2013, at 09:12, Sampsa Laine <sampsa at mac.com> wrote:
Thanks for all the help guys - I think I'm pretty close to having all the stuff I need for my little client server project.
Sampsa
On 17 Jan 2013, at 08:57, G. wrote:
On Thu, 17 Jan 2013 02:52:59 +0200, you wrote:
OK, figured that out, I have to use an open to access it first.
IIRC, your procedure must open SYS$NET, no matter what it will possibly send
through it, even if it will not send anything back, because it is the opening
of SYS$NET that triggers the dispatching of the DECnet connect-confirm message
back from the target node to the originating one.
Just try a procedure that does a five minutes wait, but does not open SYS$NET,
and you'll see that the network will time out with an error way before five
minutes (and your procedure will be stopped). Then simply add the open of
SYS$NET before the wait command and you will see that it will work whatever
time you chose for the wait, i.e. it will not time out, because the connection
will be opened and confirmed both sides and both ways.
IIRC it's not even necessary to explicitly send something thru SYS$NET to
confirm the connection, just open it.
HTH, :)
G.
Strangely enough, the procedures were working fine for almost the whole day but now I am getting nothing - no errors, just no connections.
What could cause this?
sampsa
On 17 Jan 2013, at 09:12, Sampsa Laine <sampsa at mac.com> wrote:
Thanks for all the help guys - I think I'm pretty close to having all the stuff I need for my little client server project.
Sampsa
On 17 Jan 2013, at 08:57, G. wrote:
On Thu, 17 Jan 2013 02:52:59 +0200, you wrote:
OK, figured that out, I have to use an open to access it first.
IIRC, your procedure must open SYS$NET, no matter what it will possibly send
through it, even if it will not send anything back, because it is the opening
of SYS$NET that triggers the dispatching of the DECnet connect-confirm message
back from the target node to the originating one.
Just try a procedure that does a five minutes wait, but does not open SYS$NET,
and you'll see that the network will time out with an error way before five
minutes (and your procedure will be stopped). Then simply add the open of
SYS$NET before the wait command and you will see that it will work whatever
time you chose for the wait, i.e. it will not time out, because the connection
will be opened and confirmed both sides and both ways.
IIRC it's not even necessary to explicitly send something thru SYS$NET to
confirm the connection, just open it.
HTH, :)
G.
Johnny Billquist <bqt at softjar.se> writes:
On 2013-01-17 13:17, Brian Schenkenberger, VAXman- wrote:
sampsa at mac.com writes:
How come writing to SYS$NET doesn't send any output?
FOOBAR.COM is now:
$WRITE SYS$NET "Foobar"
$DIRECTORY/OUTPUT=SYS$NET
But I only get the directory listing.
Before you can WRITE to any device, and SYS$NET is, in essence here, a
device, you must first OPEN a channel to it. In DCL, the OPEN command
will create the channel and assign the channel to a logical name which
can subsequently be used in the WRITE. You cannot WRITE to a terminal
or a file without OPENing a channel either, for example:
$ SHOW LOGICAL TT
"TT" = "_FTA207:" (LNM$PROCESS_TABLE)
$ WRITE TT "Hello World!"
%DCL-W-UNDFIL, file has not been opened by DCL - check logical name
$ OPEN/WRITE MY_TERMINAL TT:
$ WRITE MY_TERMINAL "Hello World!"
Hello World!
$
WRITE will always return with error if the channel has not first been
OPENed.
The /OUTPUT=SYS$NET tells the DIRECTORY command to send its output to
SYS$NET. Internally, the DIRECTORY command issues an RMS $OPEN before
it issues any RMS $PUT to output the directory's listing. The channel
is implicitly $CLOSEd as part of image rundown.
Your channel to SYS$NET, since you don't explicitly issue a DCL CLOSE,
will be implicitly CLOSEd as a feature of process rundown.
How does that work when several processes want to open the device? For
example, in this case, if DCL opened SYS$NET, and then you run DIRECTORY
with output directed to SYS$NET. Can DIRECTORY be allowed to open the
device, even though DCL already have it open?
As a lawyer might tell you about your chances at some matter of law: it
depends.
In VMS there are several things that will control your access to device
I/O. Privileges and Rights WRT to the device; ownership of the device;
and shareability of the device.
If you don't have privilege or access to the device, you can be denied.
If you don't own the device, you can be denied.
If the device cannot be shared, you can not access the device.
Specifically, with SYS$NET, let's look at the example posted yesterday.
Suppose, DEMO.COM is this:
$ SHOW LOGICAL/FULL SYS$NET /OUTPUT=SYS$NET
$ DIRECTORY/OUTPUT=SYS$NET
On the remote system, you'll see the translation of SYS$NET but nothing
more. Image rundown or an implicit $CLOSE when processing SHOW LOGICAL
will terminate the connection. There will be no output from DIRECTORY
seen.
However, if you open a DCL channel (supervisor mode), this will allow,
*in effect*,the back-channel to survive the image rundowns because you
are not issuing a $CLOSE for SYS$NET.
$ OPEN/WRITE NET SYS$NET
$ SHOW LOGICAL/FULL NET /OUTPUT=NET
$ SHOW LOGICAL/FULL SYS$NET /OUTPUT=NET
$ DIRECTORY/OUTPUT=NET
$ CLOSE NET
Also, what happens at close. Is the connection terminated when SYS$NET
is closed, or is the connection still around until the process is
terminated?
The DECnet connect is terminated when the $CLOSE is executed. If the
network process hangs around longer, that's all it's doing. There is
no more change to communicate with it.
$ OPEN/WRITE NET SYS$NET
$ SHOW LOGICAL/FULL NET /OUTPUT=NET
$ SHOW LOGICAL/FULL SYS$NET /OUTPUT=NET
$ DIRECTORY/OUTPUT=NET
$ WRITE NET "''F$getjpi("","MASTER_PID")'"
$ CLOSE NET
$ WRITE NET "Remote network process ID: ''F$getjpi("","MASTER_PID")'"
$ WAIT 10:: ! hang out in front of the drug store... ;)
At this point, you can see the remote process on its node using the
'$ SHOW SYSTEM/NETWORK' command. You might as well '$ STOP/ID" it as
it's doing nothing.
Can another open be done on the same SYS$NET, and you can continue
exchanging data?
No. There will not *be* any more back-channel. DECnet will have torn
it down upon command from the $CLOSE. *IF* you need to communicate to
the remote for the life of the network process, then you need to keep
the SYS$NET channel alive such as by using '$ OPEN/WRITE NET SYS$NET'.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
Well I speak to machines with the voice of humanity.