You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@storm.apache.org by "Erik Weathers (JIRA)" <ji...@apache.org> on 2017/04/21 00:49:04 UTC

[jira] [Created] (STORM-2486) bin/storm launcher script can be broken if CDPATH is exported from environment

Erik Weathers created STORM-2486:
------------------------------------

             Summary: bin/storm launcher script can be broken if CDPATH is exported from environment
                 Key: STORM-2486
                 URL: https://issues.apache.org/jira/browse/STORM-2486
             Project: Apache Storm
          Issue Type: Bug
            Reporter: Erik Weathers
            Priority: Minor


In the {{bin/storm}} script there is logic that attempts to determine the fullpath of the {{bin}} directory, and it relies on using {{cd}} and {{pwd}} like so:

{code}
STORM_BIN_DIR=`dirname ${PRG}`
export STORM_BASE_DIR=`cd ${STORM_BIN_DIR}/..;pwd`
{code}

This is problematic if your environment has an exported {{CDPATH}} variable which contains a matching entry, because bash's built-in {{cd}} command prints out the directory upon successfully matching a {{CDPATH}} entry.  And then the {{pwd}} command prints the same directory again.  So the behavior results in the {{STORM_BASE_DIR}} variable containing duplicate paths with a newline in between.  This results in a broken classpath in the Storm processes, which looks something like this:

{code}
...:/base/apache-storm-2.0.0-SNAPSHOT/lib/storm-rename-hack-2.0.0-SNAPSHOT.jar:/base/apache-storm-2.0.0-SNAPSHOT^J/base/apache-storm-2.0.0-SNAPSHOT/conf:/base/apache-storm-2.0.0-SNAPSHOT/storm-local/supervisor/stormdist/foo-1-1480491213/stormjar.jar
{code}

Or with the {{:}} chars replaced with newlines for ease of readability:
{code}
...
/base/apache-storm-2.0.0-SNAPSHOT/lib/storm-rename-hack-2.0.0-SNAPSHOT.jar
/base/apache-storm-2.0.0-SNAPSHOT^J/base/apache-storm-2.0.0-SNAPSHOT/conf
/base/apache-storm-2.0.0-SNAPSHOT/storm-local/supervisor/stormdist/foo-1-1480491213/stormjar.jar
{code}

Note that the classpath entry with {{/conf}} as a suffix is munged, with a {{^J}} character in between duplicate copies of the base path.

The solution is easy:  at the beginning of the {{bin/storm}} script we should {{unset CDPATH}}.

FYI, this "CDPATH + bash script" problem is covered in this blog entry:
* https://bosker.wordpress.com/2012/02/12/bash-scripters-beware-of-the-cdpath/




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)