Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Implementieren von Rückmeldemethoden

Dieser Abschnitt enthält Informationen, die sich auf das Implementieren von Rückmeldemethoden allgemein beziehen.

Zugreifen auf Informationen über Ressourcen- und Ressourcengruppeneigenschaften

Im Allgemeinen benötigen Rückmeldemethoden Zugriff auf die Eigenschaften der Ressource. Die RMAPI stellt sowohl Shell-Befehle als auch C-Funktionen bereit, die Sie in Rückmeldemethoden für den Zugriff auf systemdefinierte und Erweiterungseigenschaften von Ressourcen verwenden können. Weitere Informationen finden Sie in der Online-Dokumentation unter scha_resource_get(1HA) und scha_resource_get(3HA)..

Die DSDL stellt zum Zugriff auf systemdefinierte Eigenschaften einen Satz C-Funktionen bereit (eine pro Eigenschaft) sowie eine Funktion zum Zugriff auf Erweiterungseigenschaften. Weitere Informationen finden Sie in der Online-Dokumentation unter scds_property_functions(3HA) und scds_get_ext_property(3HA).

Sie können den Eigenschaftsmechanismus nicht für das Speichern von dynamischen Zustandsinformationen für einen Datendienst verwenden, da keine API-Funktionen für das Einstellen von Ressourceneigenschaften vorhanden sind, mit Ausnahme derjenigen zum Einstellen von Status und Status_msg. Stattdessen müssen Sie dynamische Zustandsinformationen in globalen Dateien speichern.


Hinweis –

Der Cluster-Verwalter kann bestimmte Ressourceneigenschaften mithilfe des Befehls scrgadm oder über einen vorhandenen grafischen Verwaltungsbefehl bzw. eine vorhandene grafische Verwaltungs-Benutzeroberfläche einstellen. scrgadm darf jedoch nicht von einer Rückmeldemethode aus aufgerufen werden, da scrgadm während einer Cluster-Rekonfiguration fehlschlägt, also wenn RGM die Methode aufruft.


Idempotenz für Methoden

Im Allgemeinen ruft RGM keine Methode mehr als einmal nacheinander für die gleiche Ressource mit den gleichen Argumenten auf. Wenn jedoch eine Start-Methode fehlschlägt, könnte RGM eine Stop-Methode für eine Ressource aufrufen, obwohl diese Ressource gar nicht gestartet wurde. Ebenso könnte ein Ressourcen-Dämon von selbst ausfallen und RGM dennoch die Stop-Methode aufrufen. Die gleichen Möglichkeiten gelten für die Methoden Monitor_start und Monitor_stop.

Aus diesen Gründen müssen Sie Idempotenz in Ihre Stop- und Monitor_stop-Methoden einbauen. Wiederholte Aufrufe von Stop oder Monitor_stop für die gleiche Ressource mit den gleichen Parametern erzielen dann das gleiche Ergebnis wie ein einziger Aufruf.

Eine Auswirkung der Idempotenz ist, dass Stop und Monitor_stop 0 (Erfolg) zurückgeben müssen, auch wenn die Ressource bzw. der Monitor bereits gestoppt sind und keine Aufgabe ausgeführt wird.


Hinweis –

Die Methoden Init, Fini, Boot und Update müssen ebenfalls idempotent sein. Eine Start-Methode muss nicht idempotent sein.