[mod.computers.vax] FINGER problems

GERLAND@UBVMS.BITNET.UUCP (02/18/87)

I have sent the following note to Rich Garland (SY$GARLAND@CUCHEM) but I
noticed he has not logged on since 19-Dec-1986 so I am posting to the net
to see if any of you can help.
=================================Enclosed Mail=================================
I have a problem with the FINGER database.  I am running FINGER here on a
cluster (2 8650s & 1 785).  When we first clustered I tried installing FINGER
& FINGERSHR from SYS$COMMON:[SYSEXE] but the database would be wrong from time
to time.  Then I built a separate version of FINGER and FINGERSHR on SYS$SYSTEM
of each machine and submitted a FINGER-REBUILD com once a day on each machine
at the same time.  This helped a little but if a machine gets rebooted the
database once again is out of sync.  Have you seen this problem before?  If so,
do you have a suggestion to fix it?  I have over 5000 userids (mostly students)
who send me at least 10 pieces of mail everytime they notice that FINGER does
not show them their buddy's correct name.
 
Thanks in advance for any help you can provide.
 
Jim...
 
       Computer Center          Room 226
       University Computing Services
       State University of New York at Buffalo
       Buffalo, NY   14260      (716) 636-3557
 
       BITNET:  gerland@ubvms   (VAX/VMS)
                gerland@ubvm    (VM/CMS)
       CSNET:   gerland@buffalo
       UUCP:    ...{alegra,decvax,watmath}!sunybcs!gerland
 
       DONATE BLOOD - We like your type!
 

LEICHTER-JERRY@YALE.ARPA.UUCP (02/20/87)

    I have a problem with the FINGER database.  I am running FINGER here on a
    cluster (2 8650s & 1 785).  When we first clustered I tried installing
    FINGER & FINGERSHR from SYS$COMMON:[SYSEXE] but the database would be
    wrong from time to time.  Then I built a separate version of FINGER and
    FINGERSHR on SYS$SYSTEM of each machine and submitted a FINGER-REBUILD com
    once a day on each machine at the same time.  This helped a little but if
    a machine gets rebooted the database once again is out of sync....

We faced the same problem here.  Unfortunately, there is no really good solu-
tion, given the current structure of the FINGER database:  Since one file
contains ALL the information - both information common to all cluster nodes,
like UIC/username matching, and stuff specific to each node, like the node
name - using that same file on multiple machines in a cluster is guaranteed
to produce a lot of confusion.  What I ended up doing was creating a separate
file for each cluster node and a command file that would point FINGER off to
the right place on each node.  (This could have been done, as you have done,
by keeping the database in SYS$SPECIFIC on each node, but I found that harder
to deal with.)

We use the PACS accounting stuff here, so all account creation goes through
some standard command files, which see to it that the FINGER database is
re-built.  The problem in a cluster is that (a) you have to re-build all the
files on each cluster member; (b) you have to re-INSTALL the FINGERSHR image
on each cluster member.  It would be easy to modify the file I've included
below so that it would re-build the database for each of a known list of node
names.  It could then submit jobs on a queue on each cluster member that would
do a REPLACE of FINGERSHR.

The two files that are system-specific are FINGERDATA and FINGERSHR; they are
actually FINGERxxx_node.  FINGERDATA_node.COM contains the finger data that
is in the command file itself in the original version.

This code could use one fix - it unconditionally REMOVE's the images it
INSTALL's.  This avoids errors if you try to run it a second time, but means
that you get some warnings when you boot.  What can I tell you, V4 was new at
the time and I didn't realize you could check with F$FILE(...,"KNOWN").

							-- Jerry


$!..StartFing.Com                     Start finger stuff at BOOT time
$!..                                  R. Garland / C.U.Chemistry / 28-Mar-1983
$!..  VMS V4.0 version
$! Modified, 7-Nov-1985 to run on a cluster - the common stuff is done here,
$!  Jerry Leichter      but the data-base is node-specific.  (On a homogenous
$!                      cluster, it would be better if the user DB were common
$!                      and the host DB were not, but that would require
$!                      splitting it into two files.)
$ !     Check every line with "<-- Edit" on it
$ Write Sys$Output      "[Installing Finger]"
$!
$!  Note: you must edit this file - Change the logical name following to
$!      point to the place where you keep programs like this.  Change
$!      the terminal locations, and host routing appropriately.
$ Define         Finger$Directory      utools:[dcltools.exe]    !<-- Edit
$!JSL+
$ node = f$edit(f$getsyi("scsnode"),"trim")
$ suffix = ""
$ if node .nes. "" then suffix = "_" + node
$ install :== $SYS$SYSTEM:INSTALL/COMMAND_MODE
$!JSL-
$!
$!
$!      PARAMETERS:
$!              P1      := "REBUILD"    reconstruct FINGERSHR database
$!
$!  Note: Finger needs SYSPRV (so it can read SYSUAF.DAT and users'
$!      MAIL.MAI files), WORLD (so it can do GETJPI on all processes),
$!      and CMKRNL (so it can get the terminal idle times).
$!
$!      FINGERSHR is the shared databse for usernames, terminal locations
$!      and remote host routing.
$!
$!      NOTE: (this one is wierd) FINGERSHR must first be unprotected
$!      (WORLD is given write privilege) then installed to work properly!!
$!
$ set noon                                                              !JSL+
$ install delete Finger$Directory:Finger
$ install delete Finger$Directory:FingerShr'suffix'
$ set on                                                                !JSL-
$ Set   Prot=(W:RWE)    Finger$Directory:FingerShr'suffix'.Exe
$ install add Finger$Directory:Finger                           -       !JSL+
		/Open /Shared /Header /Priv=(Sysprv,World,Cmkrnl)
$ install add Finger$Directory:FingerShr'suffix'                -
		/Open /Shared /Header /Write /Priv=(Sysprv,Sysgbl)
$!Set  Prot=(W:RE)     Finger$Directory:FingerShr'suffix'.Exe           !JSL-
$!
$!  Note: FINGERSHR must be defined so the image activator can find
$!      the shared section containing the finger database.
$!
$ Define/System/Exec    FingerShr                               -       !JSL
		       'F$Log("Finger$Directory")'FingerShr'suffix'     !JSL
$!
$!  Note: the finger database does not need to be rebuilt each time you Boot.
$!      However, since you may have added names to the UAF and forgotten
$!      to add them to the finger database, you may want to rebuild.
$!
$!  Format of entries:
$!      Users:  ADD /USER=BLOW /PERSONALNAME="Blow, Joe"
$!              or
$!              ADD /USER /UAF
$!      Hosts:  ADD /HOST=FRODO /TYPE=D
$!              TYPES:  L=local
$!                      D=DECnet
$!                      J=JNET (VMS or Unix host)
$!                      I=JNET (IBM host)
$!                      T=TCP/IP (TWG)
$!              /LINK is used for the actual host name when /HOST
$!              is a pseudonym.  /ROUTE is for poor-man's-routing or
$!              internet gateway-ing.
$!      Other:
$!              /Network - gives "proper" names to network i.e. BITnet, ARPAnet
$!              /Local_Host - your node name.  If not given, DECnet name is used
$!              /Oganization - text string (for header) (optional).
$!              /Router - Host name and net type to send requests for unknown
$!                      hosts (optional).
$!          Note: you do not need to make an entry for DECnet hosts
$!              with no pseudonyms as these ar found by default.
$!
$ If    P1      .eqs. ""        Then GoTo NoRebuild
$ If    P1      .nes.   "REBUILD" Then GoTo NoRebuild
$ assign/user Finger$Directory:fingerdata'suffix'.com SYS$INPUT         !JSL
$ Run   Finger$Directory:FingMaint
$ NoRebuild:
$!
------------------------
Here's what our FINGERDATA file looks like:

!Set up data for node VENUS
Clear   /All
Add     /Local_Host="VENUS"                             !<-- Edit
Add     /Network="DECnet"       /Type=D                 !<-- Edit
Add     /User   /UAF    ! Get names from the authorization file
Add     /Host=VENUS      /Type=L                 ! Local Host    !<-- Edit
Exit
-------