[Openais] evs tests

Steven Dake sdake at mvista.com
Thu Feb 3 00:44:45 PST 2005

On Thu, 2005-02-03 at 01:03, David Teigland wrote:
> On Thu, Feb 03, 2005 at 12:38:01AM -0700, Steven Dake wrote:
> > Dave,
> > 
> > There is defect 42 in our bugzilla system which says that configuration
> > changes are not delivered on evs_initialize call.  This is easy to fix
> > but we have been in the midst of a new implementation of our protocol. 
> > As a result we have not sorted out this defect.
> > 
> > I have tested latest bitkeeper code and stopping then starting a
> > processor or adding a processor generate a configuration change.
> > 
> > Could you explain in more detail your test case?
> #42 probably explains the problem, although I'm not certain what to expect
> yet...

What should happen given the API is that evs_initialize should generate
a configuration change callback so that the application is aware of the
current configuration.  This doesn't happen now as per #42.  I'll work
on a patch tomorrow (I guess its today:) to fix this problem so you may
make further progress.

> The confchg callback is used when the "member_list" changes.  Am I right
> to understand that evs_initialize() adds the node to this list and
> evs_finalize() removes it?  (I was partly misled into thinking that
> evs_join/evs_leave were relevant to the member list.)

evs_initialize doesn't add the processor to the list.  the aisexec
program maintains the configuration as part of the totem protocol. 
Whenever a configuration change occurs, the library is notified and the
callback is called by the library.  The bug #42 is that the current
configuration doesn't generate a callback on evs_initialize.  But it
makes sense that the application may want to know the current
configuration before messages are ordered and delivered.

Your intuition is correct thought; what we really want longer term is
for a mechanism for each particular process to be notified when an
application/process joins the process group.  The api needs further
development in this area so that individual applications within a
process group may uniquely identify each other.

This should work by  evs_initialize generating a unique per-process
identfiier returned back to the caller of evs_initialize.  Then the
configuration change would consist of a process identifier:ip address. 
Then messages could be sent to a unique process by adding the process
identifier to the message contents.  Then the processor that wants a
process specific message could filter the process identifier in its
delivery callback for its own process identifier.  If an application
doesn't care which particular process the messages are sent to, it could
address all processes in the process group.

Unfortunately this "process group" functionality is not part of the EVS
interface.  It definately needs to be to be generically useful for
applications that require p2p communications.

> If I kill aisexec I do indeed get the confchg.  I'm primarily interested
> in having my evs-conf program discover all the other nodes in the member
> list, but it sounds like this won't work unless a member is killed or bug
> 42 is fixed.

yup thats right.  I'll sort out a patch tomorrow for this problem so you
can make further progress.


More information about the Openais mailing list