... 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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1999-12-13