Previous Table of Contents Next


23.2.7 Most Recent Object Group Reference


   This section defines a mechanism that allows the server to determine whether the client is using the most recent object group reference for the server object group when the client issues a request. The mechanism consists of an FT_GROUP_VERSION service context that a client may include in its request messages.

   23.2.7.1 FT_GROUP_VERSION Service Context

   The FTGroupVersionServiceContext struct contains the version of the object group reference for the server object group, which allows the server to determine whether the client is using an obsolete object group reference. When encoded in a request or reply message header, the context_data component of the ServiceContext struct shall contain a CDR encapsulation of the FTGroupVersionServiceContext struct, which is defined below.

   module IOP { const ServiceId FT_GROUP_VERSION = 12;

   };

   module FT { struct FTGroupVersionServiceContext { //context_id = FT_GROUP_VERSION; ObjectGroupRefVersion object_group_ref_version; }; };

   If the server determines that the client is using an obsolete object group reference, the server returns a LOCATION_FORWARD_PERM response that contains the most recent object group reference for the server object group.

   const ServiceId FT_GROUP_VERSION = 12;

   A constant that designates the FT_GROUP_VERSION service context.

   struct FTGroupVersionServiceContext{ //context_id = FT_GROUP_VERSION; ObjectGroupRefVersion object_group_ref_version;

   };

   A structure that contains the same object_group_ref_version that is in the TAG_FT_GROUP component of each of the TAG_INTERNET_IOP profiles of the object group reference for the server object group, which allows the server ORB to determine whether the object group reference being used by the client is obsolete.

   When the Replication Manager generates a new object group reference for the server object group, because the membership of the server object group has changed, it updates the object_group_ref_version in the reference for the new membership.

   If the highest object_group_ref_version known to the server ORB is greater than that contained in the request from the client, the server ORB must return a LOCATION_FORWARD_PERM response to the client containing the most recent reference for the server object group.

   If the object_group_ref_version known to the server ORB is equal to that contained in the request from the client and the server ORB supports the primary member of the server object group, the server ORB invokes the member to process the request. If the object_group_ref_version known to the server ORB is equal to that contained in the request from the client and the server ORB supports a backup member, the server ORB returns a TRANSIENT exception with completion status COMPLETION_NO to the client ORB. The client ORB can then reinvoke the request using another profile from the object group reference.

   If the most recent object_group_ref_version known to the server ORB is less than that contained in the request from the client, the server ORB must obtain the current reference for the server object group. If the object_group_ref_version in the object group reference returned by the Replication Manager is greater than that contained in the request from the client, the server ORB must return a LOCATION_FORWARD_PERM response to the client containing the most recent reference for the server object group. If the object_group_ref_version in the object group reference returned by the Replication Manager is less than that contained in the request from the client, the server ORB returns an INV_OBJREF exception to the client.