Previous | Table of Contents | Next |
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:
• Neither is set if all objects at the given location have failed.
• TypeId is set and ObjectGroupId is not set if all objects at the given location with the given type have failed.
• Both are set if the member with the given ObjectGroupId at the given location has failed.