- ... sender3.1
- This work only if the request was a multicast request, so all
members received (and stored) a copy of the request.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it3.2
- Local delivery can be turned on/off using SetOpt.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... false3.3
- A member will never retrieve the state from itself !
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... channel)3.4
- Note that the channel
currently has to be connected, otherwise an error message is issued.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... buffer3.5
- See 3.1.10 for two helper
methods to serialize/unserialize objects to/from byte arrays.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stacks3.6
- See
4.3 for a detailed discussion of this division.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... members)3.7
- If no suspicion service is available, timeouts
can be used instead.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ./JavaGroups/JavaStack/Protocols3.8
- The location of the directory may
change in th future.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... method3.9
- If
in doubt what properties are accepted by a layer, this method can always be
consulted in the source code.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... broadcasting3.10
- The terms
multicasting and broadcasting are used synonymously in the
user's guide.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it3.11
- To do so, Router has to maintain a
table of groups, member addresses and TCP connections.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... traffic.3.12
- Usually port 80 is already taken by the HTTP
server. However, if port 80 is the only port allowed, the HTTP server
could be replaced with a proxy HTTP server which directs requests on to
either the HTTP server or the Router.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... daemon3.13
- The alternatives outlined below are currently (March 1999)
not implemented. However, the modifications proposed should not be difficult
to implement.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... JChannel4.1
- However,
exceptions is the JChannel protocol stack, caused by a malfunctioning protocol, are
caught at the JChannel level, and can therefore not cause havoc to the channel
itself. Yet, malfunctioning protocols may affect messages (adding wrong headers,
modifying message contents, or dropping messages), therefore the reliability of a
protocol stack is the sum of the robustness and reliability of all its layers.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... views4.2
- Virtual synchrony does not guarantee any ordering
properties for the messages between views, this would have to be handled
by a separate layer (e.g. TOTAL).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...4.3
- File JavaGroups/Event.java will always be the
most current source of information concerning events.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stopped4.4
- For initialization
and de-initialization see 4.1.6.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... message4.5
- The
overridden method could possible reorder or even
discard the message altogether.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... buffer4.6
- Using Util.DefragmentBuffer,
cf. 3.1.10.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... result4.7
- RpcProtocol assumes that all communication is done via
method calls, therefore it will not process other objects. However, the
implementation of Handle could be overridden to allow this.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stack5.1
- Note that in some cases
ordering may not be strict (e.g. no FIFO ordering required). In such a case,
concurrency could be introduced.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...5.2
- A similar
(circular) deadlock situation is shown in fig. 5.2.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... P5.3
- For simplicity excluding the sender of the request that caused P to
send m1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... requests5.4
- Note that
only synchronous requests are tagged with call chains, asynchronous requests
will never cause the sorts of deadlocks described above, because the caller does
not wait for their completion.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... one5.5
- This is different from causal
order [Bir96, ch. 13.12.6] which records potential causality between
message reception and sending, as it has no means to detect real causality.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... them.6.1
- This is for example possible by switching
from a NAK-based to an ACK-based scheme.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... messages'6.2
- Note that
if no STABLE layer is present underneath, all messages in 'sent
messages' will be returned ! However, the 'sent messages' store is cleared
whenever a new view is installed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... it7.1
- Except
when the suspected member is the coordinator: in this case, the next member in
rank takes over and becomes the new coordinator. Decisions based on member
ordering are possible because ordering is always deterministic. This means
that no distributed election algorithm needs to be run. The coordinator is
commonly the first member.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 07.2
- This is not yet implemented, therefore MNAK is not usable at the
time ! It will be implemented when the FLUSH protocol is written.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stack7.3
- Not yet
available as of March 99.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... state7.4
- Note that the data type of the state has to be serializable as
it will be marshaled/unmarshaled to be sent over the network. If this is not
the case, an exception will be thrown.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... member7.5
- If Channel.GetStates() was called, then this
message will be sent to all members instead.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.