Execution of rcndsd status is slow and rcnovell-nss fails to start

  • 7012793
  • 05-Jul-2013
  • 16-Dec-2013

Environment

Novell eDirectory 8.8.7 Patch 4
Novell eDirectory 8.8.7 Patch 3
Novell eDirectory 8.8.7 Patch 2


Situation

Different behaviors have been seen and the possible symptoms are listed below:

1. Executing "rcndsd status" or "/etc/init.d/ndsd status" is slow.
2. The error message "getnameinfo failed" is returned after executing "rcndsd status" or "/etc/init.d/ndsd status".
3. A substantial delay is observed while executing "xadcntrl status" or "xadcntrl validate" on a Novell Open Enterprise Server running Domain Services for Windows.
4. Multiple nds.netstat.* files are present in the /tmp/ directory.
5. rcnovell-nss start returns ERROR:  required eDirectory(ndsd) is not running.  Exiting.
6. Novell nss is not running.

Resolution

To prevent the issue from occurring modify the /etc/init.d/ndsd script.
Prior to making any modification make sure to backup the existing /etc/init.d/ndsd script.
Open the /etc/init.d/ndsd script with a text editor, like vi, and locate the following section:

#
# Get status of ndsd running on current host
#
StatusNdsd () {
        netstat -ep | grep ndsd > /tmp/nds.netstat.$$ 2>&1
        if [ "$?" -eq 0 ]; then
                if [ -f $bindir/ndsstat ] ; then
                        $bindir/ndsstat  --config-file $default_config_file > /tmp/nds.stat.$$ 2>&1
                        if [ "$?" -ne 0 ]; then
                                cat /tmp/nds.stat.$$
                                eval $PRINT_FAILED
                                exit 1
                        fi
                        cat /tmp/nds.stat.$$
                        rm /tmp/nds.stat.$$
                else
                        echo `gettext nds "Unable to get server status"`
                fi
        else
                echo `gettext nds "Unable to get server status"`
                exit 1
        fi
        rm /tmp/nds.netstat.$$
} # StatusNdsd


Modify the section as per the example below:

#
# Get status of ndsd running on current host
#
StatusNdsd () {
        # netstat -ep | grep ndsd > /tmp/nds.netstat.$$ 2>&1  ***** remark out this line
        echo ""                                             # ***** add this line
        if [ "$?" -eq 0 ]; then
                if [ -f $bindir/ndsstat ] ; then
                        $bindir/ndsstat  --config-file $default_config_file > /tmp/nds.stat.$$ 2>&1
                        if [ "$?" -ne 0 ]; then
                                cat /tmp/nds.stat.$$
                                eval $PRINT_FAILED
                                exit 1
                        fi
                        cat /tmp/nds.stat.$$
                        rm /tmp/nds.stat.$$
                else
                        echo `gettext nds "Unable to get server status"`
                fi
        else
                echo `gettext nds "Unable to get server status"`
                exit 1
        fi
        # rm /tmp/nds.netstat.$$                              ***** remark out this line      
} # StatusNdsd

Status

Reported to Engineering