diff --git a/CHANGES.txt b/CHANGES.txt index a2bd3aa1a6..2b9e10cc95 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 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 31a0235139..5169c44951 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 50e6eafc0e..5b4ee0f06b 100644 --- a/bin/cassandra.in.sh +++ b/bin/cassandra.in.sh @@ -48,5 +48,5 @@ 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 diff --git a/build.xml b/build.xml index e94ded8eba..e2785c1b26 100644 --- a/build.xml +++ b/build.xml @@ -369,7 +369,7 @@ - + @@ -688,7 +688,7 @@ - + @@ -1107,7 +1107,7 @@ - + @@ -1266,7 +1266,7 @@ - + @@ -1309,7 +1309,7 @@ - + diff --git a/conf/cassandra-env.ps1 b/conf/cassandra-env.ps1 index 906db7a62c..0595cf6f26 100644 --- a/conf/cassandra-env.ps1 +++ b/conf/cassandra-env.ps1 @@ -301,7 +301,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 875cbeb8e6..f5669bb8d1 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 f0116e51db..9f71d7186e 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -56,7 +56,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("");