You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2015/04/01 17:00:40 UTC

[1/6] cassandra git commit: bump versions

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 730cc6064 -> 150f82736


bump versions


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/20593c24
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/20593c24
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/20593c24

Branch: refs/heads/cassandra-2.1
Commit: 20593c24a9f8c07aff8f848f4b5774ed88ea4687
Parents: a936d7e
Author: T Jake Luciani <ja...@apache.org>
Authored: Thu Mar 12 21:01:11 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Thu Mar 12 21:01:11 2015 -0400

----------------------------------------------------------------------
 build.xml        | 2 +-
 debian/changelog | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/20593c24/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index 78c6db3..bdbd10a 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
     <property name="debuglevel" value="source,lines,vars"/>
 
     <!-- default version and SCM information -->
-    <property name="base.version" value="2.0.12"/>
+    <property name="base.version" value="2.0.13"/>
     <property name="scm.connection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.developerConnection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.url" value="http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree"/>

http://git-wip-us.apache.org/repos/asf/cassandra/blob/20593c24/debian/changelog
----------------------------------------------------------------------
diff --git a/debian/changelog b/debian/changelog
index 53fa20f..2c80800 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+cassandra (2.0.13) unstable; urgency=medium
+
+  * New release
+
+ -- Jake Luciani <ja...@apache.org>  Thu, 12 Mar 2015 21:00:06 -0400
+
 cassandra (2.0.12) unstable; urgency=medium
 
   * New release 


[2/6] cassandra git commit: Bind JMX to localhost unless explicitly configured otherwise

Posted by ja...@apache.org.
Bind JMX to localhost unless explicitly configured otherwise


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c041ea8b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c041ea8b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c041ea8b

Branch: refs/heads/cassandra-2.1
Commit: c041ea8b3748089937168839791a6d64382b34de
Parents: 7cc1cf0
Author: T Jake Luciani <ja...@apache.org>
Authored: Wed Mar 25 12:27:50 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Mon Mar 30 09:38:50 2015 -0400

----------------------------------------------------------------------
 CHANGES.txt                                     |  3 +
 NEWS.txt                                        |  6 ++
 bin/cassandra.bat                               | 11 ++-
 build.xml                                       |  3 +-
 conf/cassandra-env.ps1                          | 13 +++-
 conf/cassandra-env.sh                           | 21 ++++--
 debian/changelog                                |  6 ++
 .../cassandra/service/CassandraDaemon.java      | 78 ++++++++++++++++++--
 .../utils/RMIServerSocketFactoryImpl.java       | 34 +++++++++
 9 files changed, 157 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 954fa3f..50c7967 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,6 @@
+2.1.4
+ * If no JMX flags are set start a localhost only JMX service
+
 2.1.3
  * Fix HSHA/offheap_objects corruption (CASSANDRA-8719)
  * Upgrade libthrift to 0.9.2 (CASSANDRA-8685)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/NEWS.txt
----------------------------------------------------------------------
diff --git a/NEWS.txt b/NEWS.txt
index 602770c..076885c 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -13,6 +13,12 @@ restore snapshots created with the previous major version using the
 'sstableloader' tool. You can upgrade the file format of your snapshots
 using the provided 'sstableupgrade' tool.
 
+2.1.4
+=====
+
+The default JMX config now listens to localhost only. You must enable 
+the other JMX flags in cassandra-env.sh manually.
+
 2.1.3
 =====
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/bin/cassandra.bat
----------------------------------------------------------------------
diff --git a/bin/cassandra.bat b/bin/cassandra.bat
index 99b291a..fefd3fc 100644
--- a/bin/cassandra.bat
+++ b/bin/cassandra.bat
@@ -65,10 +65,13 @@ set JAVA_OPTS=-ea^
  -XX:MaxTenuringThreshold=1^
  -XX:CMSInitiatingOccupancyFraction=75^
  -XX:+UseCMSInitiatingOccupancyOnly^
- -Dcom.sun.management.jmxremote.port=7199^
- -Dcom.sun.management.jmxremote.ssl=false^
- -Dcom.sun.management.jmxremote.authenticate=false^
- -Dlogback.configurationFile=logback.xml
+ -Dlogback.configurationFile=logback.xml^
+ -Dcassandra.jmx.local.port=7199
+REM **** JMX REMOTE ACCESS SETTINGS SEE: https://wiki.apache.org/cassandra/JmxSecurity ***
+REM -Dcom.sun.management.jmxremote.port=7199^
+REM -Dcom.sun.management.jmxremote.ssl=false^
+REM -Dcom.sun.management.jmxremote.authenticate=true^
+REM -Dcom.sun.management.jmxremote.password.file=C:\jmxremote.password
 
 REM ***** CLASSPATH library setting *****
 REM Ensure that any user defined CLASSPATH variables are not used on startup

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index eaef534..cf401e4 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
     <property name="debuglevel" value="source,lines,vars"/>
 
     <!-- default version and SCM information -->
-    <property name="base.version" value="2.1.3"/>
+    <property name="base.version" value="2.1.4"/>
     <property name="scm.connection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.developerConnection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.url" value="http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree"/>
@@ -1113,6 +1113,7 @@
         <jvmarg value="-Xss256k"/>
         <jvmarg value="-Dcassandra.memtable_row_overhead_computation_step=100"/>
         <jvmarg value="-Dcassandra.test.use_prepared=${cassandra.test.use_prepared}"/>
+	<jvmarg value="-Dcassandra.jmx.local.port=7199" />
 	<jvmarg value="-Dcassandra.test.offsetseed=@{poffset}"/>        
 	<optjvmargs/>
         <classpath>

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/conf/cassandra-env.ps1
----------------------------------------------------------------------
diff --git a/conf/cassandra-env.ps1 b/conf/cassandra-env.ps1
index 9c6b6f4..7a71a13 100644
--- a/conf/cassandra-env.ps1
+++ b/conf/cassandra-env.ps1
@@ -400,10 +400,17 @@ Function SetCassandraEnvironment
     # https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole
     # for more on configuring JMX through firewalls, etc. (Short version:
     # get it working with no firewall first.)
-    $env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
-    $env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
-    $env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
+    #
+    # Due to potential security exploits, Cassandra ships with JMX accessible
+    # *only* from localhost.  To enable remote JMX connections, uncomment lines below
+    # with authentication and ssl enabled. See https://wiki.apache.org/cassandra/JmxSecurity 
+    #
+    #$env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
+    #$env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
+    #$env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
     #$env:JVM_OPTS="$env:JVM_OPTS -Dcom.sun.management.jmxremote.password.file=C:/jmxremote.password"
+    $env:JVM_OPTS="$env:JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT -XX:+DisableExplicitGC"
+
     $env:JVM_OPTS="$env:JVM_OPTS $JVM_EXTRA_OPTS"
 
     $env:JVM_OPTS = "$env:JVM_OPTS -Dlog4j.configuration=log4j-server.properties"

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/conf/cassandra-env.sh
----------------------------------------------------------------------
diff --git a/conf/cassandra-env.sh b/conf/cassandra-env.sh
index 3f4c21b..58022e6 100644
--- a/conf/cassandra-env.sh
+++ b/conf/cassandra-env.sh
@@ -270,6 +270,22 @@ JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"
 # https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole
 # for more on configuring JMX through firewalls, etc. (Short version:
 # get it working with no firewall first.)
+#
+# Cassandra ships with JMX accessible *only* from localhost.  
+# To enable remote JMX connections, uncomment lines below
+# with authentication and/or ssl enabled. See https://wiki.apache.org/cassandra/JmxSecurity 
+#
+LOCAL_JMX=yes
+
+if [ "$LOCAL_JMX" = "yes" ]; then
+  JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT -XX:+DisableExplicitGC"
+else
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+fi
 
 # To use mx4j, an HTML interface for JMX, add mx4j-tools.jar to the lib/
 # directory.
@@ -279,11 +295,6 @@ JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"
 #MX4J_ADDRESS="-Dmx4jaddress=127.0.0.1"
 #MX4J_PORT="-Dmx4jport=8081"
 
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
-#JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
 JVM_OPTS="$JVM_OPTS $MX4J_ADDRESS"
 JVM_OPTS="$JVM_OPTS $MX4J_PORT"
 JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS"

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/debian/changelog
----------------------------------------------------------------------
diff --git a/debian/changelog b/debian/changelog
index 339da0c..8075460 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+cassandra (2.1.4) unstable; urgency=medium
+
+  * New release
+
+ -- Jake Luciani <ja...@apache.org>  Fri, 27 Mar 2015 13:48:25 -0400
+
 cassandra (2.1.3) unstable; urgency=medium
 
   * New release 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 50c8295..3e398bf 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -23,14 +23,16 @@ import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryPoolMXBean;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.server.RMIServerSocketFactory;
+import java.util.*;
+    import java.util.concurrent.TimeUnit;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.management.StandardMBean;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.rmi.RMIConnectorServer;
 
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
@@ -66,9 +68,61 @@ import org.apache.cassandra.utils.*;
 public class CassandraDaemon
 {
     public static final String MBEAN_NAME = "org.apache.cassandra.db:type=NativeAccess";
+    public static JMXConnectorServer jmxServer = null;
 
     private static final Logger logger = LoggerFactory.getLogger(CassandraDaemon.class);
 
+    private static void maybeInitJmx()
+    {
+        String jmxPort = System.getProperty("com.sun.management.jmxremote.port");
+
+        if (jmxPort == null)
+        {
+            logger.warn("JMX is not enabled to receive remote connections. Please see cassandra-env.sh for more info.");
+
+            jmxPort = System.getProperty("cassandra.jmx.local.port");
+
+            if (jmxPort == null)
+            {
+                logger.error("cassandra.jmx.local.port missing from cassandra-env.sh, unable to start local JMX service." + jmxPort);
+            }
+            else
+            {
+                System.setProperty("java.rmi.server.hostname","127.0.0.1");
+
+                try
+                {
+                    RMIServerSocketFactory serverFactory = new RMIServerSocketFactoryImpl();
+                    LocateRegistry.createRegistry(Integer.valueOf(jmxPort), null, serverFactory);
+
+                    StringBuffer url = new StringBuffer();
+                    url.append("service:jmx:");
+                    url.append("rmi://localhost/jndi/");
+                    url.append("rmi://localhost:").append(jmxPort).append("/jmxrmi");
+                    
+                    Map env = new HashMap();
+                    env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory);
+
+                    jmxServer = new RMIConnectorServer(
+                            new JMXServiceURL(url.toString()),
+                            env,
+                            ManagementFactory.getPlatformMBeanServer()
+                    );
+
+                    jmxServer.start();
+                }
+                catch (IOException e)
+                {
+                    logger.error("Error starting local jmx server: ", e);
+                }
+            }
+        }
+        else
+        {
+            logger.info("JMX is enabled to receive remote connections on port: " + jmxPort);
+        }
+    }
+
     private static final CassandraDaemon instance = new CassandraDaemon();
 
     /**
@@ -159,6 +213,8 @@ public class CassandraDaemon
 
         CLibrary.tryMlockall();
 
+        maybeInitJmx();
+
         Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
         {
             public void uncaughtException(Thread t, Throwable e)
@@ -432,6 +488,18 @@ public class CassandraDaemon
         // We rely on the shutdown hook to drain the node
         if (FBUtilities.isWindows())
             System.exit(0);
+
+        if (jmxServer != null)
+        {
+            try
+            {
+                jmxServer.stop();
+            }
+            catch (IOException e)
+            {
+                logger.error("Error shutting down local JMX server: ", e);
+            }
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c041ea8b/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java b/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
new file mode 100644
index 0000000..75331ab
--- /dev/null
+++ b/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
@@ -0,0 +1,34 @@
+package org.apache.cassandra.utils;
+
+import java.io.IOException;
+import java.net.*;
+import java.rmi.server.RMIServerSocketFactory;
+import javax.net.ServerSocketFactory;
+
+
+public class RMIServerSocketFactoryImpl implements RMIServerSocketFactory
+{
+
+    public ServerSocket createServerSocket(final int pPort) throws IOException  {
+        return ServerSocketFactory.getDefault().createServerSocket(pPort, 0, InetAddress.getLoopbackAddress());
+    }
+
+    public boolean equals(Object obj)
+    {
+        if (obj == null)
+        {
+            return false;
+        }
+        if (obj == this)
+        {
+            return true;
+        }
+
+        return obj.getClass().equals(getClass());
+    }
+
+    public int hashCode()
+    {
+        return RMIServerSocketFactoryImpl.class.hashCode();
+    }
+}


[4/6] cassandra git commit: Merge branch 'cassandra-2.0.14-build' into cassandra-2.0

Posted by ja...@apache.org.
Merge branch 'cassandra-2.0.14-build' into cassandra-2.0

Conflicts:
	CHANGES.txt
	build.xml
	debian/changelog


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/38a04eab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/38a04eab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/38a04eab

Branch: refs/heads/cassandra-2.1
Commit: 38a04eab6a18fe81e91cd0b7ecf00c34c443f2b5
Parents: 2cf4ca3 2433068
Author: T Jake Luciani <ja...@apache.org>
Authored: Wed Apr 1 10:45:51 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Wed Apr 1 10:45:51 2015 -0400

----------------------------------------------------------------------
 CHANGES.txt                                     |  4 +-
 NEWS.txt                                        |  5 ++
 bin/cassandra.bat                               | 11 ++-
 build.xml                                       |  2 +-
 conf/cassandra-env.sh                           | 22 ++++--
 debian/changelog                                |  9 +++
 .../cassandra/service/CassandraDaemon.java      | 79 +++++++++++++++++++-
 .../utils/RMIServerSocketFactoryImpl.java       | 34 +++++++++
 8 files changed, 151 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/38a04eab/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b6b5caf,7a3a4ea..fe1aa37
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,39 -1,5 +1,41 @@@
--2.0.14:
 - * If no JMX flags are set start a localhost only JMX service
++2.0.15:
 + * Avoid race in cancelling compactions (CASSANDRA-9070)
 + * More aggressive check for expired sstables in DTCS (CASSANDRA-8359)
 + * Don't set clientMode to true when bulk-loading sstables to avoid
 +   a NullPointerException (CASSANDRA-8238)
 + * Fix ignored index_interval change in ALTER TABLE statements (CASSANDRA-7976)
 + * Do more aggressive compaction in old time windows in DTCS (CASSANDRA-8360)
 + * java.lang.AssertionError when reading saved cache (CASSANDRA-8740)
 + * "disk full" when running cleanup (CASSANDRA-9036)
 + * Make PasswordAuthenticator number of hashing rounds configurable (CASSANDRA-8085)
 + * Lower logging level from ERROR to DEBUG when a scheduled schema pull
 +   cannot be completed due to a node being down (CASSANDRA-9032)
 + * Fix MOVED_NODE client event (CASSANDRA-8516)
 + * Allow overriding MAX_OUTSTANDING_REPLAY_COUNT (CASSANDRA-7533)
 + * Fix malformed JMX ObjectName containing IPv6 addresses (CASSANDRA-9027)
 + * Fix potential data loss in CompressedSequentialWriter (CASSANDRA-8949)
 + * (cqlsh) Allow increasing CSV field size limit through
 +   cqlshrc config option (CASSANDRA-8934)
 + * Stop logging range tombstones when exceeding the threshold
 +   (CASSANDRA-8559)
 + * Fix NullPointerException when nodetool getendpoints is run
 +   against invalid keyspaces or tables (CASSANDRA-8950)
 + * Allow specifying the tmp dir (CASSANDRA-7712)
 + * Improve compaction estimated tasks estimation (CASSANDRA-8904)
 + * Fix duplicate up/down messages sent to native clients (CASSANDRA-7816)
 + * Expose commit log archive status via JMX (CASSANDRA-8734)
 + * Provide better exceptions for invalid replication strategy parameters
 +   (CASSANDRA-8909)
 + * Fix regression in mixed single and multi-column relation support for
 +   SELECT statements (CASSANDRA-8613)
 + * Add ability to limit number of native connections (CASSANDRA-8086)
 + * Fix CQLSSTableWriter throwing exception and spawning threads
 +   (CASSANDRA-8808)
 + * Fix MT mismatch between empty and GC-able data (CASSANDRA-8979)
 + * Fix incorrect validation when snapshotting single table (CASSANDRA-8056)
 +
++2.0.14
++ * Bind JMX to localhost unless explicitly configured otherwise (CASSANDRA-9085)
  
  2.0.13:
   * Add offline tool to relevel sstables (CASSANDRA-8301)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/38a04eab/build.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/38a04eab/debian/changelog
----------------------------------------------------------------------
diff --cc debian/changelog
index 2c80800,257d636..cd183a3
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,3 -1,9 +1,12 @@@
++<<<<<<< HEAD
++=======
+ cassandra (2.0.14) unstable; urgency=medium
+ 
+   * New release
+ 
+  -- Jake Luciani <ja...@apache.org>  Thu, 26 Mar 2015 14:57:39 -0400
+ 
++>>>>>>> cassandra-2.0.14-build
  cassandra (2.0.13) unstable; urgency=medium
  
    * New release


[5/6] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Posted by ja...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/beb5ffd0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/beb5ffd0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/beb5ffd0

Branch: refs/heads/cassandra-2.1
Commit: beb5ffd0785c1be2564a5e1f09b2907f573d83d2
Parents: 730cc60 38a04ea
Author: T Jake Luciani <ja...@apache.org>
Authored: Wed Apr 1 10:49:53 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Wed Apr 1 10:49:53 2015 -0400

----------------------------------------------------------------------

----------------------------------------------------------------------



[3/6] cassandra git commit: Bind JMX to localhost unless explicitly configured otherwise

Posted by ja...@apache.org.
Bind JMX to localhost unless explicitly configured otherwise


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2433068c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2433068c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2433068c

Branch: refs/heads/cassandra-2.1
Commit: 2433068c157cd21d4217c98ec5c0b9a2c07e288d
Parents: 20593c2
Author: T Jake Luciani <ja...@apache.org>
Authored: Wed Mar 25 12:04:09 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Mon Mar 30 09:40:38 2015 -0400

----------------------------------------------------------------------
 CHANGES.txt                                     |  3 +
 NEWS.txt                                        |  5 ++
 bin/cassandra.bat                               | 11 ++-
 build.xml                                       |  5 +-
 conf/cassandra-env.sh                           | 22 ++++--
 debian/changelog                                |  6 ++
 .../cassandra/service/CassandraDaemon.java      | 79 +++++++++++++++++++-
 .../utils/RMIServerSocketFactoryImpl.java       | 34 +++++++++
 8 files changed, 150 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f98bb3f..7a3a4ea 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,6 @@
+2.0.14:
+ * If no JMX flags are set start a localhost only JMX service
+
 2.0.13:
  * Add offline tool to relevel sstables (CASSANDRA-8301)
  * Preserve stream ID for more protocol errors (CASSANDRA-8848)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/NEWS.txt
----------------------------------------------------------------------
diff --git a/NEWS.txt b/NEWS.txt
index 5a4bc3d..82f643f 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -13,6 +13,11 @@ restore snapshots created with the previous major version using the
 'sstableloader' tool. You can upgrade the file format of your snapshots
 using the provided 'sstableupgrade' tool.
 
+2.0.14
+======
+    The default JMX config now listens to localhost only. You must enable 
+the other JMX flags in cassandra-env.sh manually.
+
 2.0.13
 ======
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/bin/cassandra.bat
----------------------------------------------------------------------
diff --git a/bin/cassandra.bat b/bin/cassandra.bat
index 8a3bf7f..c316d7f 100644
--- a/bin/cassandra.bat
+++ b/bin/cassandra.bat
@@ -41,11 +41,14 @@ set JAVA_OPTS=-ea^
  -XX:MaxTenuringThreshold=1^
  -XX:CMSInitiatingOccupancyFraction=75^
  -XX:+UseCMSInitiatingOccupancyOnly^
- -Dcom.sun.management.jmxremote.port=7199^
- -Dcom.sun.management.jmxremote.ssl=false^
- -Dcom.sun.management.jmxremote.authenticate=false^
  -Dlog4j.configuration=log4j-server.properties^
- -Dlog4j.defaultInitOverride=true
+ -Dlog4j.defaultInitOverride=true^
+ -Dcassandra.jmx.local.port=7199
+REM **** JMX REMOTE ACCESS SETTINGS SEE: https://wiki.apache.org/cassandra/JmxSecurity ***
+REM -Dcom.sun.management.jmxremote.port=7199^
+REM -Dcom.sun.management.jmxremote.ssl=false^
+REM -Dcom.sun.management.jmxremote.authenticate=true^
+REM -Dcom.sun.management.jmxremote.password.file=C:\jmxremote.password
 
 REM ***** CLASSPATH library setting *****
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index bdbd10a..e644b71 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
     <property name="debuglevel" value="source,lines,vars"/>
 
     <!-- default version and SCM information -->
-    <property name="base.version" value="2.0.13"/>
+    <property name="base.version" value="2.0.14"/>
     <property name="scm.connection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.developerConnection" value="scm:git://git.apache.org/cassandra.git"/>
     <property name="scm.url" value="http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree"/>
@@ -1035,7 +1035,8 @@
         <jvmarg value="-Dlog4j.configuration=log4j-junit.properties" />
         <jvmarg value="-Djava.awt.headless=true"/>
         <jvmarg value="-javaagent:${basedir}/lib/jamm-0.2.5.jar" />
-        <jvmarg value="-ea"/>
+        <jvmarg value="-Dcassandra.jmx.local.port=7199" />
+ 	<jvmarg value="-ea"/>
         <jvmarg value="-Xss256k"/>
         <optjvmargs/>
         <classpath>

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/conf/cassandra-env.sh
----------------------------------------------------------------------
diff --git a/conf/cassandra-env.sh b/conf/cassandra-env.sh
index dfe8184..70d86cf 100644
--- a/conf/cassandra-env.sh
+++ b/conf/cassandra-env.sh
@@ -261,9 +261,21 @@ JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"
 # https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole
 # for more on configuring JMX through firewalls, etc. (Short version:
 # get it working with no firewall first.)
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
-JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
-#JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+#
+# Cassandra ships with JMX accessible  *only* from localhost.  
+# To enable remote JMX connections, change the setting below to enable JMX
+# with authentication and/or ssl enabled. See https://wiki.apache.org/cassandra/JmxSecurity 
+#
+LOCAL_JMX=yes
+
+if [ "$LOCAL_JMX" = "yes" ]; then
+  JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT -XX:+DisableExplicitGC"
+else
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
+  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+fi
+
 JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS"

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/debian/changelog
----------------------------------------------------------------------
diff --git a/debian/changelog b/debian/changelog
index 2c80800..257d636 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+cassandra (2.0.14) unstable; urgency=medium
+
+  * New release
+
+ -- Jake Luciani <ja...@apache.org>  Thu, 26 Mar 2015 14:57:39 -0400
+
 cassandra (2.0.13) unstable; urgency=medium
 
   * New release

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index cad1658..039760e 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -24,13 +24,21 @@ import java.lang.management.MemoryPoolMXBean;
 import java.net.InetAddress;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RMISocketFactory;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.management.StandardMBean;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.rmi.RMIConnectorServer;
 
 import com.addthis.metrics.reporter.config.ReporterConfig;
 
@@ -38,6 +46,7 @@ import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
 
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
+import org.apache.cassandra.utils.*;
 import org.apache.log4j.PropertyConfigurator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,10 +71,6 @@ import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.metrics.StorageMetrics;
 import org.apache.cassandra.thrift.ThriftServer;
 import org.apache.cassandra.tracing.Tracing;
-import org.apache.cassandra.utils.CLibrary;
-import org.apache.cassandra.utils.FBUtilities;
-import org.apache.cassandra.utils.Mx4jTool;
-import org.apache.cassandra.utils.Pair;
 
 /**
  * The <code>CassandraDaemon</code> is an abstraction for a Cassandra daemon
@@ -76,6 +81,7 @@ import org.apache.cassandra.utils.Pair;
 public class CassandraDaemon
 {
     public static final String MBEAN_NAME = "org.apache.cassandra.db:type=NativeAccess";
+    public static JMXConnectorServer jmxServer = null;
     
     static
     {
@@ -138,6 +144,57 @@ public class CassandraDaemon
 
     private static final Logger logger = LoggerFactory.getLogger(CassandraDaemon.class);
 
+    private static void maybeInitJmx()
+    {
+        String jmxPort = System.getProperty("com.sun.management.jmxremote.port");
+
+        if (jmxPort == null)
+        {
+            logger.warn("JMX is not enabled to receive remote connections. Please see cassandra-env.sh for more info.");
+
+            jmxPort = System.getProperty("cassandra.jmx.local.port");
+
+            if (jmxPort == null)
+            {
+                logger.error("cassandra.jmx.local.port missing from cassandra-env.sh, unable to start local JMX service." + jmxPort);
+            }
+            else
+            {
+                System.setProperty("java.rmi.server.hostname","127.0.0.1");
+
+                try
+                {
+                    RMIServerSocketFactory serverFactory = new RMIServerSocketFactoryImpl();
+                    LocateRegistry.createRegistry(Integer.valueOf(jmxPort), null, serverFactory);
+
+                    StringBuffer url = new StringBuffer();
+                    url.append("service:jmx:");
+                    url.append("rmi://localhost/jndi/");
+                    url.append("rmi://localhost:").append(jmxPort).append("/jmxrmi");
+                    
+                    Map env = new HashMap();
+                    env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory);
+
+                    jmxServer = new RMIConnectorServer(
+                            new JMXServiceURL(url.toString()),
+                            env,
+                            ManagementFactory.getPlatformMBeanServer()
+                    );
+
+                    jmxServer.start();
+                }
+                catch (IOException e)
+                {
+                    logger.error("Error starting local jmx server: ", e);
+                }
+            }
+        }
+        else
+        {
+            logger.info("JMX is enabled to receive remote connections on port: " + jmxPort);
+        }
+    }
+
     private static final CassandraDaemon instance = new CassandraDaemon();
 
     public Server thriftServer;
@@ -191,6 +248,8 @@ public class CassandraDaemon
         logger.info("Classpath: {}", System.getProperty("java.class.path"));
         CLibrary.tryMlockall();
 
+        maybeInitJmx();
+
         Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
         {
             public void uncaughtException(Thread t, Throwable e)
@@ -463,6 +522,18 @@ public class CassandraDaemon
         logger.info("Cassandra shutting down...");
         thriftServer.stop();
         nativeServer.stop();
+
+        if (jmxServer != null)
+        {
+            try
+            {
+                jmxServer.stop();
+            }
+            catch (IOException e)
+            {
+                logger.error("Error shutting down local JMX server: ", e);
+            }
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2433068c/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java b/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
new file mode 100644
index 0000000..75331ab
--- /dev/null
+++ b/src/java/org/apache/cassandra/utils/RMIServerSocketFactoryImpl.java
@@ -0,0 +1,34 @@
+package org.apache.cassandra.utils;
+
+import java.io.IOException;
+import java.net.*;
+import java.rmi.server.RMIServerSocketFactory;
+import javax.net.ServerSocketFactory;
+
+
+public class RMIServerSocketFactoryImpl implements RMIServerSocketFactory
+{
+
+    public ServerSocket createServerSocket(final int pPort) throws IOException  {
+        return ServerSocketFactory.getDefault().createServerSocket(pPort, 0, InetAddress.getLoopbackAddress());
+    }
+
+    public boolean equals(Object obj)
+    {
+        if (obj == null)
+        {
+            return false;
+        }
+        if (obj == this)
+        {
+            return true;
+        }
+
+        return obj.getClass().equals(getClass());
+    }
+
+    public int hashCode()
+    {
+        return RMIServerSocketFactoryImpl.class.hashCode();
+    }
+}


[6/6] cassandra git commit: Merge branch 'cassandra-2.1.4-build' into cassandra-2.1

Posted by ja...@apache.org.
Merge branch 'cassandra-2.1.4-build' into cassandra-2.1

Conflicts:
	CHANGES.txt
	NEWS.txt


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/150f8273
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/150f8273
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/150f8273

Branch: refs/heads/cassandra-2.1
Commit: 150f8273645e733f125870f58c03aa33b9395855
Parents: beb5ffd c041ea8
Author: T Jake Luciani <ja...@apache.org>
Authored: Wed Apr 1 10:56:05 2015 -0400
Committer: T Jake Luciani <ja...@apache.org>
Committed: Wed Apr 1 10:56:05 2015 -0400

----------------------------------------------------------------------
 CHANGES.txt                                     |  8 +-
 NEWS.txt                                        |  7 +-
 bin/cassandra.bat                               | 11 ++-
 build.xml                                       |  3 +-
 conf/cassandra-env.ps1                          | 13 +++-
 conf/cassandra-env.sh                           | 21 ++++--
 debian/changelog                                |  6 ++
 .../cassandra/service/CassandraDaemon.java      | 78 ++++++++++++++++++--
 .../utils/RMIServerSocketFactoryImpl.java       | 34 +++++++++
 9 files changed, 157 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/150f8273/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 3b99c61,50c7967..913b570
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,119 -1,5 +1,121 @@@
- 2.1.4
++2.1.5
 + * Buffer bloom filter serialization (CASSANDRA-9066)
 + * Fix anti-compaction target bloom filter size (CASSANDRA-9060)
 + * Make FROZEN and TUPLE unreserved keywords in CQL (CASSANDRA-9047)
 + * Prevent AssertionError from SizeEstimatesRecorder (CASSANDRA-9034)
 + * Avoid overwriting index summaries for sstables with an older format that
 +   does not support downsampling; rebuild summaries on startup when this
 +   is detected (CASSANDRA-8993)
 + * Fix potential data loss in CompressedSequentialWriter (CASSANDRA-8949)
 + * Make PasswordAuthenticator number of hashing rounds configurable (CASSANDRA-8085)
 + * Fix AssertionError when binding nested collections in DELETE (CASSANDRA-8900)
 + * Check for overlap with non-early sstables in LCS (CASSANDRA-8739)
 + * Only calculate max purgable timestamp if we have to (CASSANDRA-8914)
 + * (cqlsh) Greatly improve performance of COPY FROM (CASSANDRA-8225)
 + * IndexSummary effectiveIndexInterval is now a guideline, not a rule (CASSANDRA-8993)
 + * Use correct bounds for page cache eviction of compressed files (CASSANDRA-8746)
 + * SSTableScanner enforces its bounds (CASSANDRA-8946)
 + * Cleanup cell equality (CASSANDRA-8947)
 + * Introduce intra-cluster message coalescing (CASSANDRA-8692)
 + * DatabaseDescriptor throws NPE when rpc_interface is used (CASSANDRA-8839)
 + * Don't check if an sstable is live for offline compactions (CASSANDRA-8841)
 + * Don't set clientMode in SSTableLoader (CASSANDRA-8238)
 + * Fix SSTableRewriter with disabled early open (CASSANDRA-8535)
 + * Allow invalidating permissions and cache time (CASSANDRA-8722)
 + * Log warning when queries that will require ALLOW FILTERING in Cassandra 3.0
 +   are executed (CASSANDRA-8418)
 + * Fix cassandra-stress so it respects the CL passed in user mode (CASSANDRA-8948)
 + * Fix rare NPE in ColumnDefinition#hasIndexOption() (CASSANDRA-8786)
 + * cassandra-stress reports per-operation statistics, plus misc (CASSANDRA-8769)
 + * Add SimpleDate (cql date) and Time (cql time) types (CASSANDRA-7523)
 + * Use long for key count in cfstats (CASSANDRA-8913)
 + * Make SSTableRewriter.abort() more robust to failure (CASSANDRA-8832)
 + * Remove cold_reads_to_omit from STCS (CASSANDRA-8860)
 + * Make EstimatedHistogram#percentile() use ceil instead of floor (CASSANDRA-8883)
 + * Fix top partitions reporting wrong cardinality (CASSANDRA-8834)
 + * Fix rare NPE in KeyCacheSerializer (CASSANDRA-8067)
 + * Pick sstables for validation as late as possible inc repairs (CASSANDRA-8366)
 + * Fix commitlog getPendingTasks to not increment (CASSANDRA-8856)
 + * Fix parallelism adjustment in range and secondary index queries
 +   when the first fetch does not satisfy the limit (CASSANDRA-8856)
 + * Check if the filtered sstables is non-empty in STCS (CASSANDRA-8843)
 + * Upgrade java-driver used for cassandra-stress (CASSANDRA-8842)
 + * Fix CommitLog.forceRecycleAllSegments() memory access error (CASSANDRA-8812)
 + * Improve assertions in Memory (CASSANDRA-8792)
 + * Fix SSTableRewriter cleanup (CASSANDRA-8802)
 + * Introduce SafeMemory for CompressionMetadata.Writer (CASSANDRA-8758)
 + * 'nodetool info' prints exception against older node (CASSANDRA-8796)
 + * Ensure SSTableReader.last corresponds exactly with the file end (CASSANDRA-8750)
 + * Make SSTableWriter.openEarly more robust and obvious (CASSANDRA-8747)
 + * Enforce SSTableReader.first/last (CASSANDRA-8744)
 + * Cleanup SegmentedFile API (CASSANDRA-8749)
 + * Avoid overlap with early compaction replacement (CASSANDRA-8683)
 + * Safer Resource Management++ (CASSANDRA-8707)
 + * Write partition size estimates into a system table (CASSANDRA-7688)
 + * cqlsh: Fix keys() and full() collection indexes in DESCRIBE output
 +   (CASSANDRA-8154)
 + * Show progress of streaming in nodetool netstats (CASSANDRA-8886)
 + * IndexSummaryBuilder utilises offheap memory, and shares data between
 +   each IndexSummary opened from it (CASSANDRA-8757)
 + * markCompacting only succeeds if the exact SSTableReader instances being 
 +   marked are in the live set (CASSANDRA-8689)
 + * cassandra-stress support for varint (CASSANDRA-8882)
 + * Fix Adler32 digest for compressed sstables (CASSANDRA-8778)
 + * Add nodetool statushandoff/statusbackup (CASSANDRA-8912)
 + * Use stdout for progress and stats in sstableloader (CASSANDRA-8982)
 +Merged from 2.0:
 + * Avoid race in cancelling compactions (CASSANDRA-9070)
 + * More aggressive check for expired sstables in DTCS (CASSANDRA-8359)
 + * Fix ignored index_interval change in ALTER TABLE statements (CASSANDRA-7976)
 + * Do more aggressive compaction in old time windows in DTCS (CASSANDRA-8360)
 + * java.lang.AssertionError when reading saved cache (CASSANDRA-8740)
 + * "disk full" when running cleanup (CASSANDRA-9036)
 + * Lower logging level from ERROR to DEBUG when a scheduled schema pull
 +   cannot be completed due to a node being down (CASSANDRA-9032)
 + * Fix MOVED_NODE client event (CASSANDRA-8516)
 + * Allow overriding MAX_OUTSTANDING_REPLAY_COUNT (CASSANDRA-7533)
 + * Fix malformed JMX ObjectName containing IPv6 addresses (CASSANDRA-9027)
 + * (cqlsh) Allow increasing CSV field size limit through
 +   cqlshrc config option (CASSANDRA-8934)
 + * Stop logging range tombstones when exceeding the threshold
 +   (CASSANDRA-8559)
 + * Fix NullPointerException when nodetool getendpoints is run
 +   against invalid keyspaces or tables (CASSANDRA-8950)
 + * Allow specifying the tmp dir (CASSANDRA-7712)
 + * Improve compaction estimated tasks estimation (CASSANDRA-8904)
 + * Fix duplicate up/down messages sent to native clients (CASSANDRA-7816)
 + * Expose commit log archive status via JMX (CASSANDRA-8734)
 + * Provide better exceptions for invalid replication strategy parameters
 +   (CASSANDRA-8909)
 + * Fix regression in mixed single and multi-column relation support for
 +   SELECT statements (CASSANDRA-8613)
 + * Add ability to limit number of native connections (CASSANDRA-8086)
 + * Fix CQLSSTableWriter throwing exception and spawning threads
 +   (CASSANDRA-8808)
 + * Fix MT mismatch between empty and GC-able data (CASSANDRA-8979)
 + * Fix incorrect validation when snapshotting single table (CASSANDRA-8056)
 + * Add offline tool to relevel sstables (CASSANDRA-8301)
 + * Preserve stream ID for more protocol errors (CASSANDRA-8848)
 + * Fix combining token() function with multi-column relations on
 +   clustering columns (CASSANDRA-8797)
 + * Make CFS.markReferenced() resistant to bad refcounting (CASSANDRA-8829)
 + * Fix StreamTransferTask abort/complete bad refcounting (CASSANDRA-8815)
 + * Fix AssertionError when querying a DESC clustering ordered
 +   table with ASC ordering and paging (CASSANDRA-8767)
 + * AssertionError: "Memory was freed" when running cleanup (CASSANDRA-8716)
 + * Make it possible to set max_sstable_age to fractional days (CASSANDRA-8406)
 + * Fix some multi-column relations with indexes on some clustering
 +   columns (CASSANDRA-8275)
 + * Fix memory leak in SSTableSimple*Writer and SSTableReader.validate()
 +   (CASSANDRA-8748)
 + * Throw OOM if allocating memory fails to return a valid pointer (CASSANDRA-8726)
 + * Fix SSTableSimpleUnsortedWriter ConcurrentModificationException (CASSANDRA-8619)
 + * 'nodetool info' prints exception against older node (CASSANDRA-8796)
 + * Ensure SSTableSimpleUnsortedWriter.close() terminates if
 +   disk writer has crashed (CASSANDRA-8807)
 +
+ 2.1.4
 - * If no JMX flags are set start a localhost only JMX service
++ * Bind JMX to localhost unless explicitly configured otherwise (CASSANDRA-9085)
  
  2.1.3
   * Fix HSHA/offheap_objects corruption (CASSANDRA-8719)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/150f8273/NEWS.txt
----------------------------------------------------------------------
diff --cc NEWS.txt
index 4ead1ea,076885c..0816602
--- a/NEWS.txt
+++ b/NEWS.txt
@@@ -13,19 -13,12 +13,24 @@@ restore snapshots created with the prev
  'sstableloader' tool. You can upgrade the file format of your snapshots
  using the provided 'sstableupgrade' tool.
  
--2.1.4
++2.1.5
  =====
 +Upgrading
 +---------
 +    - The option to omit cold sstables with size tiered compaction has been
 +      removed - it is almost always better to use date tiered compaction for
 +      workloads that have cold data. 
 +
 +New features
 +------------
 +    - New `SimpleDateType` (cql date). 4-byte unsigned integer w/out timestamp
 +    - New `TimeType` (cql time). 8-byte long nano-second resolution timestamp
  
++2.1.4
++=====
+ The default JMX config now listens to localhost only. You must enable 
+ the other JMX flags in cassandra-env.sh manually.
+ 
  2.1.3
  =====
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/150f8273/build.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/150f8273/conf/cassandra-env.sh
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/150f8273/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------