Previous Table of Contents Next


23.4.5 Fault Event Types


   Fault reports are conveyed to the Fault Notifier by the Fault Detectors and by the Fault Notifier to the entities that have registered for such notifications. The Fault Detectors and Fault Notifier use a well-defined event type to convey a given fault event. This specification defines a set of fault event types that are understood by the Fault Tolerance Infrastructure. Vendors or the OMG may extend these fault event types to include other types of fault events.

   To align the Fault Tolerant CORBA specification with the CosNotification Service, the fault event types are mandated to be either CosNotification::StructuredEvent or CosNotification::EventBatch (sequence of StructuredEvent). Fault events flow from the Fault Detectors to the Fault Notifier to the consumers according to one of these two formats.

   23.4.5.1 ObjectCrashFault

   The fault management specification defines one event type: ObjectCrashFault. As the name suggests, this event is generated by a Fault Detector when it detects that an object has crashed. The definition for the event type is as follows:

   CosNotification::StructuredEvent fault_event; fault_event.header.fixed_header.event_type.domain_name = "FT_CORBA"; fault_event.header.fixed_header.event_type.type_name = "ObjectCrashFault"; fault_event.filterable_data_length(2); fault_event.filterable_data[0].name = "FTDomainId"; fault_event.filterable_data[0].value = /* Value of FTDomainId bundled into any */; fault_event.filterable_data[1].name = “Location?; fault_event.filterable_data[1].value = /* Value of Location bundled into any */; if (all objects at a given location have failed)

   {} /* do nothing */ else { fault_event.filterable_data.length(3); fault_event.filterable_data[2].name = "TypeId"; fault_event.filterable_data[2].value = /* Value of TypeId bundled into any */; if (all objects of a given type at a given location have failed)

   {} /* do nothing */

   else { fault_event.filterable_data.length(4); fault_event.filterable_data[3].name = "ObjectGroupId"; fault_event.filterable_data[3].value =

   /* Value of ObjectGroupId bundled into any */; }; };

   The filterable_data part of the event body contains the identity of the crashed object as four name-value pairs: the fault tolerance domain identifier, the member’s location identifier, the repository identifier and the object group identifier. The Fault Notifier filters events based on the domain_name, the type_name, and the four identifiers. All other fields of the structured event may be set to null.

   The Fault Detector always sets the following fault event fields: domain_name, type_name, FTDomainId, and Location. The fault detector may or may not set the TypeId and ObjectGroupId fields with the following interpretations: