[mod.computers.apollo] USENET news software and Apollo Domain/IX

dclemans%UUCP@mntgfx.UUCP.UUCP (07/15/86)

We have the USENET news software (news 2.10.3 beta, rn, vn) running on the Apollo
ring at Mentor Graphics.  The news message directories (i.e., /usr/spool/news renamed)
are on a DSP160.  That same node also handles sending/receiving news from our
feed site, sequent.  People run the news reading programs from their individual
nodes.

In this environment, the BIG problem with the USENET software (specifically inews)
is that it depends on being able to write to the news active file (and the history
file?) anytime it wants to.  This capability is NOT supported in general on a
multi node Domain/IX environment; i.e. if a news reading program has the "active"
file open for reading, inews/rnews WILL NOT be able to open it with write access
(unless both the news reader program and inews/rnews are running on the same node).

This causes things like multitudes of "unwritable files" messages to the news
administrator, some articles dropped on the floor, etc.  EXCEPT for "rn", things
aren't too bad, because most of the news reader programs just read the active file
once, close it (or else don't use it any more), and go on with their business.
However, "rn" keeps the active file open and in use during the whole time it's
running.  This can lock out inews/rnews for quite a while.

To get around this, I modified "rn" to make a copy of the active file when it starts
up and from then on reference only the copy.  I also stuck some "ulkob -f" (or equivalents)
in at various places.  With this there's still spurts when a few articles disappear,
but it's not too bad.

Another problem is that there are scattered uses of uninitialized local variables
throughout the USENET software.  While you can get away with that most of the time
on typical UNIX architectures with entirely separate address spaces, you can't on
Domain/IX where an address space is shared.

dgc

mishkin@apollo.UUCP (Nathaniel Mishkin) (07/23/86)

In-Reply-To: decvax!tektronix!sequent!mntgfx!dclemans@yale.UUCP, mon, 14 jul 86 18:06:33

    We have the USENET news software (news 2.10.3 beta, rn, vn) running
    on the Apollo ring at Mentor Graphics....

    In this environment, the BIG problem with the USENET software
    (specifically inews) is that it depends on being able to write to
    the news active file (and the history file?) anytime it wants to.
    This capability is NOT supported in general on a multi node Domain/IX
    environment; i.e. if a news reading program has the "active" file
    open for reading, inews/rnews WILL NOT be able to open it with write
    access (unless both the news reader program and inews/rnews are running
    on the same node).

Another message has dealt (or will deal) with how to get around this
problem.  I just want to point out that the reason that this facility
is not available is because it is fundamentally difficult to implement
with any guarantee of reasonable behavior.  It's hard enough to implement
systems (and write programs that use) a facility that allows simultaneous
readers and writers of a single file on a single system, but when you
have multiple systems that don't even have a common physical memory,
it's nearly impossible.

In addition to the simultaneous readers and writers problem, "transient
file system failures" (e.g. network partitions that makes some file
temporarily unavailable) also screw up "traditionally written" programs.
(E.g. pieces of UUCP have the potential for serious problems if they're
not run on the node on which "/usr/spool/uucp" and "/usr/lib/uucp" actually
reside.)

These problems really demand more abstract solutions.  E.g. in the case
of the Usenet sofware, there should be servers answering requests about
what the state of the active newsgroups are.  Of course, the Usenet
software, along with tons of other Unix software, was developed before
there were distributed file systems so the need didn't seem pressing
at the time.

    To get around this, I modified "rn" to make a copy of the active
    file when it starts up and from then on reference only the copy.
    I also stuck some "ulkob -f" (or equivalents) in at various places.
    With this there's still spurts when a few articles disappear, but
    it's not too bad.

"ulkob -f" is a power tool.  Use it incorrectly and you could get hurt.
I'd like to know why/where you found it necessary to use it.

    Another problem is that there are scattered uses of uninitialized
    local variables throughout the USENET software.  While you can get
    away with that most of the time on typical UNIX architectures with
    entirely separate address spaces, you can't on Domain/IX where an
    address space is shared.

While our architecture may not be identical to vanilla Unix, it seems
clear to me that depending on the initial values of uninitialized local
variables is treading on thin (or no) ice.  I.e. I think this qualifies
as a Usenet software bug.
    
                    -- Nat Mishkin
                       Apollo Computer Inc.
                       apollo!mishkin
-------