basho / node_package

RPM/Debian/FreeBSD/SmartOS/Solaris/OSX packaging templates for Erlang Nodes
Apache License 2.0
89 stars 63 forks source link

Riak start emitts error when starting on SmartOS #177

Open dekobon opened 9 years ago

dekobon commented 9 years ago

This issue is similar to this issue: https://github.com/basho/node_package/issues/117

When starting the riak script as so:

[root@riak-02-staging ~]# riak start
***
Warning: please use 'svcadm enable riak' instead
***
/opt/local/sbin/riak[185]: [: argument expected
[root@riak-02-staging ~]# riak ping
pong

If I am manually starting everything works well. However, if I am starting with SMF, this will cause havoc and it will result in the process not starting properly some of the time.

I've looked at the code that is offending - bin/riak:185 :

    # Make sure we have access to enough file descriptors
    ULIMIT_S=$(prctl -n process.max-file-descriptor -t basic -P $$ | awk '/max-file-descriptor/ { print $3 }')
    ULIMIT_H=$(prctl -n process.max-file-descriptor -t priv -P $$ | awk '/max-file-descriptor/ { print $3 }')
    if [ ${ULIMIT_S} -lt ${ULIMIT_H} ]; then
        echo "Trying to raise the file descriptor limit to maximum allowed."
        prctl -n process.max-file-descriptor -t basic -v ${ULIMIT_H} $$ || true
    fi

What's happening is the command executing for ULIMIT_S is returning a blank string. I believe this can be easily rectified by adding quotes in the conditional as so:

    # Make sure we have access to enough file descriptors
    ULIMIT_S=$(prctl -n process.max-file-descriptor -t basic -P $$ | awk '/max-file-descriptor/ { print $3 }')
    ULIMIT_H=$(prctl -n process.max-file-descriptor -t priv -P $$ | awk '/max-file-descriptor/ { print $3 }')
    if [ "${ULIMIT_S}" -lt "${ULIMIT_H}" ]; then
        echo "Trying to raise the file descriptor limit to maximum allowed."
        prctl -n process.max-file-descriptor -t basic -v ${ULIMIT_H} $$ || true
    fi