Previous Table of Contents Next


23.4.4 Pull-Based Monitoring


   Based on the MEMB FaultMonitoringGranularity and the PULL FaultMonitoringStyle, the Replication Manager chooses a pull-based Fault Detector to monitor a member of the object group. The pull-based Fault Detector periodically pings the member by invoking the is_alive() operation of the PullMonitorable interface that the member of the object group inherits. The period of the ping is determined by the FaultMonitoringInterval for the object group. The pull-based Fault Detector uses the monitoring interval as a hint (in contrast to maintaining the exact value) to optimize monitoring across a number of objects.

   23.4.4.1 PULL Fault Monitoring Style

   In the PULL FaultMonitoringStyle, the Fault Detector periodically invokes the object to check its liveness; the monitored object responds to these liveness requests. The monitored object must inherit the PullMonitorable interface. The Fault Detector invokes the is_alive() operation of this interface to check the liveness of the object.

    Figure 23-9 shows the interactions between the monitored object represented by the PullMonitorable interface and the Fault Detector for the PULL FaultMonitoringStyle, and the interactions with the Fault Notifier and the Replication Manager.

   Replication Manager

   push_structured_event() or push_sequence_event()


   Fault Notifier

   


push_structured_fault() or push_sequence_fault()

   FaultDetector


   Figure 23-9 PULL FaultMonitoringStyle.

   23.4.4.2 PullMonitorable Interface

   module FT { interface PullMonitorable boolean is_alive(); }; };

   is_alive

   This operation informs the pull-based Fault Detector whether the object is able to accept requests and produce replies. The monitored object may return true directly to indicate its liveness, or it may perform an application-specific “health? check (for example, assertion check) within the operation and return false if the test shows that the object is in an inconsistent state.

   boolean is_alive();

   Return Value

   Returns true if the object is alive and ready to take further requests, and false otherwise.