자원 유형 구현의 Stop 콜백 메소드는 응용 프로그램을 중지하기 위해 클러스터 노드에서 RGM에 의해 호출됩니다. Stop 메소드의 콜백 의미는 다음을 요구합니다.
Start 메소드가 노드에서 성공적으로 완료되지 않은 경우에도 RGM에 의해 Stop 메소드가 호출될 수 있으므로 Stop 메소드는 멱등원이어야 합니다. 따라서 Stop 메소드는 응용 프로그램이 클러스터 노드에서 실행 중이 아니며 이에 대해 수행할 작업이 없는 경우에도 성공(0을 반환하고 종료)해야 합니다.
자원 유형의 Stop 메소드가 클러스터 노드에서 실패(0이 아닌 값을 반환하고 종료)할 경우 중지하려는 자원은 STOP_FAILED 상태가 됩니다. 자원의 Failover_mode 설정에 따라 이 상태로 인해 RGM에서 클러스터 노드의 하드 재부트를 수행할 수 있습니다.
따라서 이 메소드가 응용 프로그램을 실제로 중지하도록 Stop 메소드를 디자인해야 합니다. SIGKILL을 사용하여 응용 프로그램을 종료하는 데 실패할 경우 응용 프로그램을 강제로 중단해야 할 수도 있습니다.
또한 프레임워크에서 Stop_timeout 등록 정보의 만료를 중지 실패로 간주하고 자원을 STOP_FAILED 상태로 설정하기 때문에 이 메소드가 적절한 시간에 응용 프로그램을 중지하도록 해야 합니다.
DSDL 유틸리티 scds_pmf_stop()은 SIGTERM을 통해 응용 프로그램을 유연하게 중지하려고 시도한 다음 프로세스에 SIGKILL을 전달하므로 대부분의 응용 프로그램을 중지할 수 있습니다. 이 함수는 응용 프로그램이 scds_pmf_start()를 통해 PMF에서 시작되었다고 가정합니다. 이 유틸리티에 대한 자세한 내용은 PMF 함수를 참조하십시오.
응용 프로그램을 중지하는 응용 프로그램 특정 함수를 svc_stop()이라고 가정할 경우 Stop 메소드를 다음과 같이 구현합니다.
if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) { return (1); /* Initialization Error */ } return (svc_stop(handle));
앞의 svc_stop() 함수 구현에 scds_pmf_stop() 함수를 포함할지 여부는 여기서 다루지 않습니다. 응용 프로그램이 Start 메소드를 통해 PMF에서 시작되었는지에 따라 scds_pmf_stop() 함수의 포함 여부가 결정될 것입니다.
svc_validate() 메소드는 Stop 메소드 구현에 사용되지 않습니다. 이는 시스템에 문제가 있는 경우에도 Stop 메소드가 해당 노드에서 응용 프로그램의 중지를 시도해야 하기 때문입니다.