RGM 將呼叫 Update 方法,以通知正在執行的資源其屬性已變更。 在管理動作成功設定了資源或其所在群組的屬性之後,RGM 將呼叫 Update。 此方法在資源處於線上狀態的節點之上被呼叫。
Update 方法不會更新由 RGM 完成的屬性。 相反,它會通知正在執行的程序已發生更新。 資料服務範例中唯一受屬性更新影響的程序是故障監視器,因此 Update 方法停止與重新啟動的正是此程序。
Update 方法必須驗證故障監視器是否正在執行,然後使用 pmfadm 來終止它。 該方法將獲取實施故障監視器的探測程式之位置,然後再次使用 pmfadm 來重新啟動此程式。
Update 方法將使用 pmfadm -q 驗證監視器是否正在執行,如果正在執行,則使用 pmfadm -s TERM 來終止它。 如果成功地終止了監視器,系統會將一條大意為此的訊息發送至使用者管理員。 如果無法停止監視器,Update 將以失敗狀態退出,並發送一條錯誤訊息至使用者管理員。
if pmfadm -q $RESOURCE_NAME.monitor; then # Kill the monitor that is running already pmfadm -s $PMF_TAG TERM if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Could not stop the monitor" exit 1 else # could successfully stop DNS. Log a message. logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ "Monitor for HA-DNS successfully stopped" fi |
若要重新啟動監視器,Update 方法必須找到實現探測程式的程序檔。 探測程式位於資料服務的基本目錄中,Rt_basedir 屬性指向該基本目錄。 Update 擷取 Rt_basedir 的值,並將其儲存於變數 RT_BASEDIR 中,如下所示。
RT_BASEDIR=`scha_resource_get -O RT_BASEDIR -R $RESOURCE_NAME -G \ $RESOURCEGROUP_NAME` |
然後 Update 將搭配 pmfadm 使用 RT_BASEDIR 的值,來重新啟動 dns_probe 程式。 如果成功,Update 將以成功狀態退出,並將一條大意為此的訊息發送至使用者管理員。 如果 pmfadm 無法啟動探測程式,則 Update 將以失敗狀態退出並記錄一條錯誤訊息。
Update 方法失敗將導致資源被置於「更新失敗」狀態。 該狀態對資源的 RGM 管理沒有影響,但透過 syslog 工具指示對管理工具的更新動作失敗。