Uploaded image for project: 'Apache Storm'
  1. Apache Storm
  2. STORM-2486

bin/storm launcher script can be broken if CDPATH is exported from environment

    XMLWordPrintableJSON

Details

    Description

      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:

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

      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:

      ...:/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
      

      Or with the : chars replaced with newlines for ease of readability:

      ...
      /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
      

      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:

      Attachments

        Issue Links

          Activity

            People

              erikdw Erik Weathers
              erikdw Erik Weathers
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 50m
                  50m