Date: 08 SEP 92 19:38:51 GMT
Newsgroups: vmsnet.networks.tcp-ip.multinet
X-Return-path: <info-multinet-relay@TGV.COM>
X-RFC822-From: David Barkelew <CCDK001@utxvms.cc.utexas.edu>
From: David Barkelew <CCDK001@utxvms.cc.utexas.edu>
Subject: Re: decwindows, multinet, and ucx
X-Envelope-to: info-multinet@TGV.COM
X-VMS-To: IN%"omicron@erich.triumf.ca"
X-VMS-Cc: IN%"info-multinet@TGV.COM"
Organization: The INFO-MULTINET Community

> Is there some trick to using multinet as the ip transport on a cluster
> node which does not have ucx installed?  In the log file ucx$server_0_error.log
> it says:

> %DECW-W-ATT_FAIL, failed to attach transport TCPIP
> -SYSTEM-W-NOSUCHDEV, no such device available

> and the people from DEC are saying that this occurs if one does not have
> UCX installed on a machine, regardless of whther or not it is being used.
> Is this true?

I've found a race condition when you start MultiNet in parallel (as
in BATCH or DETACHED job) with your systartup_v5.com.  Basically, you
must insure that DECNET starts before MultiNet, and that MultiNet starts
before DECWindows.  The DECWindows process seems to complete it's startup
as soon as SYSTARTUP_V5.COM is complete, which (in my case) may or may
not be before MultiNet completes.

You can restart your local DECWindows server using the following command,
but it will kill all active windows on your workstation and you'll be back
to the login box.

	@sys$startup:decw$startup restart

In my configuration, systartup_v5 runs a detached procedure (named
start_networks.com) that starts all our networking software in the right
order.  At the same time, my systartup_v5 tries to start everything as
a detached job or in batch queues to increase parallelism and reduce the
overall time it takes before users can begin logging in.

As a hack (no flames, please) here's what I do to sync the two jobs.

1) define a logical/sys/exec in SYLOGICALS, which executes before
   SYSTARTUP_V5.COM:

      $ define/system/exec wait_for_multinet "Multinet_Not_Started"

2) create a site-specific DECWindow server startup command file that looks
   like the following.  This is called by sys$startup:decw$startserver.com
   before it actually (re)starts the server process.

  $! Wait for MultiNet to start so that the local display-server can
  $!  use TCP/IP as a transport. (map to a section installed by MultiNet)
  $!
  $! Give up after 5 minutes and start DECWindows anyway
  $!
  $      count = 0
  $      wait_for_multinet = f$trnlnm("wait_for_multinet")
  $      if wait_for_multinet .eqs. "" then exit    ! no MultiNet on this node
  $ 10$: if wait_for_multinet .nes. "MULTINET_STARTED"
  $      then
  $        count = count + 1
  $        if count .eq. 60
  $        then
  $          define/sys/exec wait_for_multinet -
                   "DECWindows started anyway.  Multinet took too long"
  $          exit
  $        else
  $          wait 00:00:05
  $          wait_for_multinet = f$trnlnm("wait_for_multinet")
  $          goto 10$
  $        endif
  $      endif
  $      deass/sys/exec/nolog wait_for_multinet
  $      exit


3) in my start_networks.com, I redefine the logical WAIT_FOR_MULTINET
   to indicate that multinet has started

  $	@sys$sysroot:[multinet]start_multinet
  $	define/sys/exec wait_for_multinet MULTINET_STARTED


Looking at the code in decw$startserver.com doesn't indicate that it waits
for DECNET or SYSTARTUP_V5 to complete.  I haven't looked at the fiche
(although I do have it :-), but observed behavior indicates that it does.
I'm sure there are better ways to do this, but this works for me.

++ Dave
-----------------------------------------------------------------------
David Barkelew                  Internet: barkelew@utxvms.cc.utexas.edu
Unix/VMS Services,              UUCP:     ...!ut-emx!utxvms!barkelew
Computation Center              THEnet:   UTXVMS::BARKELEW
University of Texas             BITNET:   BARKELEW@UTXVMS
Voice: (512)471-3241            FAX:      (512)471-1582
-----------------------------------------------------------------------
X-Gateway-Source-Info: INTERNET