diff --git a/CHANGES.txt b/CHANGES.txt index ee05da9a39..736c659e4d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -32,6 +32,7 @@ 2.1.2 + * Fix Cassandra crash when running on JDK8 update 40 (CASSANDRA-8209) * Optimize partitioner tokens (CASSANDRA-8230) * Improve compaction of repaired/unrepaired sstables (CASSANDRA-8004) * Make cache serializers pluggable (CASSANDRA-8096) diff --git a/bin/cassandra.bat b/bin/cassandra.bat index 7a41e90a97..02f96777e7 100644 --- a/bin/cassandra.bat +++ b/bin/cassandra.bat @@ -54,7 +54,7 @@ if NOT DEFINED JAVA_HOME goto :err REM ----------------------------------------------------------------------------- REM JVM Opts we'll use in legacy run or installation set JAVA_OPTS=-ea^ - -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.2.6.jar"^ + -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.2.8.jar"^ -Xms2G^ -Xmx2G^ -XX:+HeapDumpOnOutOfMemoryError^ diff --git a/bin/cassandra.in.sh b/bin/cassandra.in.sh index ed124bcdb7..b4ed9b60b9 100644 --- a/bin/cassandra.in.sh +++ b/bin/cassandra.in.sh @@ -48,7 +48,7 @@ done if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \ || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ] then - JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.6.jar" + JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.8.jar" fi # Added sigar-bin to the java.library.path CASSANDRA-7838 diff --git a/build.xml b/build.xml index d119e839a2..264203454e 100644 --- a/build.xml +++ b/build.xml @@ -333,9 +333,9 @@ - - - + + + @@ -679,7 +679,7 @@ - + @@ -1106,7 +1106,7 @@ - + @@ -1278,7 +1278,7 @@ - + @@ -1321,7 +1321,7 @@ - + diff --git a/conf/cassandra-env.ps1 b/conf/cassandra-env.ps1 index 1f3f06f69d..685a86f60f 100644 --- a/conf/cassandra-env.ps1 +++ b/conf/cassandra-env.ps1 @@ -304,7 +304,7 @@ Function SetCassandraEnvironment if (($env:JVM_VENDOR -ne "OpenJDK") -or ($env:JVM_VERSION.CompareTo("1.6.0") -eq 1) -or (($env:JVM_VERSION -eq "1.6.0") -and ($env:JVM_PATCH_VERSION.CompareTo("22") -eq 1))) { - $env:JVM_OPTS = "$env:JVM_OPTS -javaagent:""$env:CASSANDRA_HOME\lib\jamm-0.2.6.jar""" + $env:JVM_OPTS = "$env:JVM_OPTS -javaagent:""$env:CASSANDRA_HOME\lib\jamm-0.2.8.jar""" } # enable assertions. disabling this in production will give a modest diff --git a/conf/cassandra-env.sh b/conf/cassandra-env.sh index a0ab30d11a..a7acb15e06 100644 --- a/conf/cassandra-env.sh +++ b/conf/cassandra-env.sh @@ -173,7 +173,7 @@ JMX_PORT="7199" JVM_OPTS="$JVM_OPTS -ea" # add the jamm javaagent -JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.6.jar" +JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.8.jar" # some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541 JVM_OPTS="$JVM_OPTS -XX:+CMSClassUnloadingEnabled" diff --git a/debian/cassandra.in.sh b/debian/cassandra.in.sh index efb7abbcd8..bf76cf710a 100644 --- a/debian/cassandra.in.sh +++ b/debian/cassandra.in.sh @@ -26,5 +26,5 @@ CLASSPATH="$CLASSPATH:$EXTRA_CLASSPATH" if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \ || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ] then - JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.6.jar" + JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.8.jar" fi diff --git a/lib/jamm-0.2.6.jar b/lib/jamm-0.2.6.jar deleted file mode 100644 index 04e5c2ef3a..0000000000 Binary files a/lib/jamm-0.2.6.jar and /dev/null differ diff --git a/lib/jamm-0.2.8.jar b/lib/jamm-0.2.8.jar new file mode 100644 index 0000000000..e1cb6690ac Binary files /dev/null and b/lib/jamm-0.2.8.jar differ diff --git a/lib/licenses/jamm-0.2.6.txt b/lib/licenses/jamm-0.2.8.txt similarity index 100% rename from lib/licenses/jamm-0.2.6.txt rename to lib/licenses/jamm-0.2.8.txt diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java index 926f87b043..b20a771822 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -55,7 +55,7 @@ public class QueryProcessor implements QueryHandler public static final QueryProcessor instance = new QueryProcessor(); private static final Logger logger = LoggerFactory.getLogger(QueryProcessor.class); - private static final MemoryMeter meter = new MemoryMeter().withGuessing(MemoryMeter.Guess.FALLBACK_BEST); + private static final MemoryMeter meter = new MemoryMeter().withGuessing(MemoryMeter.Guess.FALLBACK_BEST).ignoreKnownSingletons(); private static final long MAX_CACHE_PREPARED_MEMORY = Runtime.getRuntime().maxMemory() / 256; private static EntryWeigher cqlMemoryUsageWeigher = new EntryWeigher() diff --git a/src/java/org/apache/cassandra/utils/ObjectSizes.java b/src/java/org/apache/cassandra/utils/ObjectSizes.java index 3720385dbc..e05dcbaa70 100644 --- a/src/java/org/apache/cassandra/utils/ObjectSizes.java +++ b/src/java/org/apache/cassandra/utils/ObjectSizes.java @@ -33,7 +33,8 @@ public class ObjectSizes { private static final MemoryMeter meter = new MemoryMeter() .omitSharedBufferOverhead() - .withGuessing(MemoryMeter.Guess.FALLBACK_UNSAFE); + .withGuessing(MemoryMeter.Guess.FALLBACK_UNSAFE) + .ignoreKnownSingletons(); private static final long BUFFER_EMPTY_SIZE = measure(ByteBufferUtil.EMPTY_BYTE_BUFFER); private static final long STRING_EMPTY_SIZE = measure("");