Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

实现回叫方法

本小节介绍了有关实现回叫方法的信息。

访问资源和资源组特性信息

一般情况下,回叫方法需要对资源的特性进行访问。 RMAPI 同时提供了可在回叫方法中使用的 shell 命令和 C 函数,以访问系统定义的资源特性和扩展资源特性。 请参阅 scha_resource_get(1HA)scha_resource_get(3HA) 手册页。

DSDL 提供了一组用来访问系统定义的特性的 C 函数(一种特性对应一种函数),还提供了一种用来访问扩展特性的函数。 请参阅 scds_property_functions(3HA)scds_get_ext_property(3HA) 手册页。

您无法使用特性机制来存储数据服务的动态状态信息,因为没有可用于设置资源特性(除了 StatusStatus_msg)的 API 函数。 您应该将动态状态信息存储在全局文件中。


注意:

使用 scrgadm 命令,或者通过可用的图形管理命令或图形管理界面,群集管理员可以设置某些资源特性。 但是,请勿从任何回叫方法中调用 scrgadm,因为 scrgadm 将在重新配置群集过程中(即当 RGM 调用方法时)失败。


方法的幂等性

通常情况下,RGM 不会使用相同的变量对同一资源连续多次调用某个方法。 但是,如果 Start 方法失败了,即使从未启动过该资源,RGM 也会对其调用 Stop 方法。 同样地,如果资源守护程序主动停止运行,RGM 可能仍会对该程序调用 Stop 方法。 相同的情况也适用于 Monitor_startMonitor_stop 方法。

因为这些原因,您必须在 StopMonitor_stop 方法中内置幂等性。 使用相同参数对同一资源重复调用 StopMonitor_stop 的结果与进行单一调用的结果相同。

幂等性的一个含义是使 StopMonitor_stop 必须返回 0(成功),即使这时资源或监视器已经停止并且无工作要完成。


注意:

InitFiniBootUpdate 方法也必须具有幂等性。 Start 方法无需具有幂等性。