Skip Navigation Links
Exit Print View
| Oracle Solaris Cluster Data Services Developer's Guide Oracle Solaris Cluster 4.1

Search Scope:

- This Document
- Entire Library

## `Start` Method

The `Start` callback method of a resource type implementation is called by the RGM on a chosen cluster node to start the resource. The resource group name, the resource name, and resource type name are passed on the command line. The `Start` method performs the actions that are needed to start a data service resource in the cluster node. Typically this involves retrieving the resource properties, locating the application specific executable file, configuration files, or both, and starting the application with the correct command-line arguments.

With the DSDL, the resource configuration is already retrieved by the `scds_initialize()` function. The startup action for the application can be contained in a function `svc_start()`. Another function, `svc_wait()`, can be called to verify that the application actually starts. The simplified code for the `Start` method is as follows:

    int
    main(int argc, char *argv[])
    {
       scds_handle_t handle;

       if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
       return (1);   /* Initialization Error */
       }
       if (svc_validate(handle) != 0) {
       return (1);   /* Invalid settings */
       }
       if (svc_start(handle) != 0) {
       return (1);   /* Start failed */
       }
       return (svc_wait(handle));
    }

This start method implementation calls `svc_validate()` to validate the resource configuration. If it fails, either the resource configuration and application configuration do not match or there is currently a problem on this cluster node with regard to the system. For example, a cluster file system that is needed by the resource might currently not be available on this cluster node. In this case, it is futile to attempt to start the resource on this cluster node. It is better to let the RGM attempt to start the resource on a different node.

Note, however, that the preceding statement assumes that `svc_validate()` is sufficiently conservative, checking only for resources on the cluster node that are required by the application. Otherwise, the resource might fail to start on all cluster nodes and thus enter a `START_FAILED` state. See the Oracle Solaris Cluster Data Services Planning and Administration Guide for an explanation of this state.

The `svc_start()` function must return 0 for a successful startup of the resource on the node. If the startup function encounters a problem, it must return nonzero. Upon failure of this function, the RGM attempts to start the resource on a different cluster node.

To take advantage of the DSDL as much as possible, the `svc_start()` function can call the `scds_pmf_start()` utility to start the application under the Process Monitor Facility (PMF). This utility also uses the failure callback action feature of the PMF to detect process failure. See the description of the `-a` action argument in the `pmfadm`(1M) man page for more information.

Copyright © 2000, 2012, Oracle and/or its affiliates. All rights reserved. Legal Notices |