3.1.1.8 Connection Object

The Connection object represents a directional connection between two members. It tracks the state of each inbound and outbound connection for the replica set and tracks the delivery state of each outbound change order. The local member object replicates with other member objects in the direction specified in the connection objects based on the connection object's schedule. Connection objects are populated when FRS service polls directory service (DS) for FRS configuration changes.

Each Member object maintains a list of Connection objects, each of which contains the following data about a connection.

Direction: Inbound or outbound.

Session GUID: Each Join on a connection is uniquely identified by a session GUID. The session GUID is used to retry change orders that were accepted by a connection that has since unjoined from its partner. The change orders for a previous session are retried because they are out-of-order with respect to the change orders for the current session. In FRS, the order of change orders is maintained per session by coordinating the partners at connection establishment time.

Join Status: Joined or not joined. Partner version vectors if joined.

Schedule: See section 2.3.1.2.

Partner GUID: GUID that identifies the member of the replica set that this connection connects to.

LastJoinTime: MUST be the Join time of the current successful connection session.

For outbound connections, the Member object also has the following objects:

Outbound Connection Outbound Log:  Change orders to be sent to the downstream partner. The leading (or next change order to be sent out) and trailing (or last acknowledged change order) index for the downstream partner is in the outbound connection outbound log. The outbound connection object keeps track of its last Join time.

Partner Version Vector: Downstream partner's version vector.<33>