Newsgroups: comp.sys.isis
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!batcomputer!cornell!news
From: rcbc@cs.cornell.edu (Robert Cooper)
Subject: Re: Process groups as network-level objects
In-Reply-To: abbott@aero.org (Russell J. Abbott)
Message-ID: <1991Apr30.133100.3535@cs.cornell.edu>
Sender: news@cs.cornell.edu (USENET news user)
Nntp-Posting-Host: honir.cs.cornell.edu
Reply-To: rcbc@cs.cornell.edu (Robert Cooper)
Organization: Cornell University Computer Science Department
References: <1991Apr29.205624.17754@aero.org>
Date: Tue, 30 Apr 1991 13:31:00 GMT
Lines: 61

In article <1991Apr29.205624.17754@aero.org>, abbott@aero (Russell J. Abbott) writes:

>With the preceding in mind, I would also recommend that ISIS do more to
>enforce (or at least strongly recommend) consistency among processes
>within process groups so that a process group will (unless explicitly
>defined otherwise by a user) consist of processes that implement
>network-level objects.  I imagine, though, that the issue of
>intra-process group consistency is one that the ISIS group must have
>debated.  I wonder why you made the decision not to go in that
>direction.
>
>-- Russ Abbott@itro3.aero.org

Russ has some good points. I've always thought that Isis programs were a
bit prone to errors of inconsistency between group members. E.g. where one
group member joins the group specifying PG_LOGGED (to enable logging for
total resiliency) but another member neglects to do so. Another example is
where an entry must be called using abcast to ensure correct semantics of
the application.

One idea we've been bouncing around for a while without actually
implementing it is the following:

(1) Entry numbers are on a per-group basis. Currently entry numbers
a global, or at least process-wide, rather like RPC procedure numbers.
Instead, entry numbers would be unique only within a group. Among other
things this would make management and allocation of entry numbers easier
for programmers. There would continue to be a process-wide entry numbers
for compatability purposes though.

(2) Associated with a group entry number would be some attributes,
including "Ordering" which would specify ABCAST or CBCAST (or either I
suppose). Other attributes would include something I call "Extent" which
says how many group members the bcast should be sent to (e.g. all,
majority, one), and "Replies" which says how many replies should received
before considering the bcast to have succeeded (e.g. all, one etc.).

(3) Groups would also have attributes specifying options such as 
PG_LOGGED that are currently specified as arguments to the group join
operation. Other attributes come to mind, such as a minimal and optimal
number of group members.

These attributes would be enforced as follows:

Group attributes would be defined by the first process to join the group,
in its arguments to the pg_join operation. Also there would be
an isis_group_entry routine that would take a list of entry attributes.
These group and entry attributes would be bundled up into a piece of group
state that would be transferred to other group members as they join. If
those members violated these attributes, i.e. they specified incompatible
arguments to their own pg_join and isis_group_entry operations, then they
would be prevented from completing their join to the group. 

These group and entry attributes would perhaps be specified in some group
interface language. However, the above proposal does not rely on any
one interface language, leaving us free to fit in with different interface
languages. One example language is the IDL language developed by 
ANSA/ISA project in Cambridge England. Currently we have a visitor at our
group from that project, so you may see some activity in this area.

                         -- Robert Cooper
