Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-6006

Value of JVM_OPTS is partially lost when enabling JEMallocAllocator in cassandra-env.sh

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 2.0.1
    • Local/Config
    • None
    • Linux, cassandra 2.0.0

    • Low

    Description

      In conf/cassandra-env.sh I see this:

      # Configure the following for JEMallocAllocator and if jemalloc is not available in the system
      # library path (Example: /usr/local/lib/). Usually "make install" will do the right thing.
      # export LD_LIBRARY_PATH=<JEMALLOC_HOME>/lib/
      # JVM_OPTS="-Djava.library.path=<JEMALLOC_HOME>/lib/"
      

      When I have enabled JEMalloc I have noticed that Cassandra complained about JAMM agent not being configured. Then I have realized that a bunch of JVM settings do not get passed to JVM, like heap size etc. This is because here the new argument replaces the previous value of JVM_OPTS instead of being added to it.

      Here is the diff:

      *** cassandra-env.sh.orig       2013-08-28 13:07:53.000000000 +0000
      --- cassandra-env.sh    2013-09-11 13:25:12.904640141 +0000
      ***************
      *** 227,233 ****
        # Configure the following for JEMallocAllocator and if jemalloc is not available in the system
        # library path (Example: /usr/local/lib/). Usually "make install" will do the right thing.
        # export LD_LIBRARY_PATH=<JEMALLOC_HOME>/lib/
      ! # JVM_OPTS="-Djava.library.path=<JEMALLOC_HOME>/lib/"
      
        # uncomment to have Cassandra JVM listen for remote debuggers/profilers on port 1414
        # JVM_OPTS="$JVM_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1414"
      --- 227,233 ----
        # Configure the following for JEMallocAllocator and if jemalloc is not available in the system
        # library path (Example: /usr/local/lib/). Usually "make install" will do the right thing.
        # export LD_LIBRARY_PATH=<JEMALLOC_HOME>/lib/
      ! # JVM_OPTS="$JVM_OPTS -Djava.library.path=<JEMALLOC_HOME>/lib/"
      
        # uncomment to have Cassandra JVM listen for remote debuggers/profilers on port 1414
        # JVM_OPTS="$JVM_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1414"
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            ngrigoriev Nikolai Grigoriev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: