Sun Cluster 3.0 12/01 Data Services Developer's Guide

The xfonts_probe Main Loop

The xfonts_probe method implements a loop. Before implementing the loop, xfonts_probe

The xfnts_probe method implements the loop as follows.


Example 7-17

		for (ip = 0; ip < netaddr->num_netaddrs; ip++) {
			/*
			 * Grab the hostname and port on which the
			 * health has to be monitored.
			 */
			hostname = netaddr->netaddrs[ip].hostname;
			port = netaddr->netaddrs[ip].port_proto.port;
			/*
			 * HA-XFS supports only one port and
			 * hence obtain the port value from the
			 * first entry in the array of ports.
			 */
			ht1 = gethrtime(); /* Latch probe start time */
			scds_syslog(LOG_INFO, "Probing the service on "
			    "port: %d.", port);

			probe_result =
			svc_probe(scds_handle, hostname, port, timeout);

			/*
			 * Update service probe history,
			 * take action if necessary.
			 * Latch probe end time.
			 */
			ht2 = gethrtime();

			/* Convert to milliseconds */
			dt = (ulong_t)((ht2 - ht1) / 1e6);

			/*
			 * Compute failure history and take
			 * action if needed
			 */
			(void) scds_fm_action(scds_handle,
			    probe_result, (long)dt);
		}	/* Each net resource */
	} 	/* Keep probing forever */

The svc_probe function implements the probe logic. The return value from svc_probe is passed to scds_fm_action, which determines whether to restart the application, failover the resource group, or do nothing.