diff --git a/CHANGES.txt b/CHANGES.txt index bdc86fad2f..411e8f0137 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -47,6 +47,9 @@ dev ColumnFamilyInputFormat (CASSANDRA-1096) * do not recalculate cache capacity post-compaction if it's been manually modified (CASSANDRA-1079) + * better defaults for flush sorter + writer executor queue sizes + (CASSANDRA-1100) + * windows scripts for SSTableImport/Export (CASSANDRA-1051) 0.6.1 diff --git a/bin/json2sstable.bat b/bin/json2sstable.bat new file mode 100644 index 0000000000..0e3fa317be --- /dev/null +++ b/bin/json2sstable.bat @@ -0,0 +1,68 @@ +@REM +@REM Licensed to the Apache Software Foundation (ASF) under one or more +@REM contributor license agreements. See the NOTICE file distributed with +@REM this work for additional information regarding copyright ownership. +@REM The ASF licenses this file to You under the Apache License, Version 2.0 +@REM (the "License"); you may not use this file except in compliance with +@REM the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. + +@echo off +if "%OS%" == "Windows_NT" setlocal + +if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD% +if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf +if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.tools.SSTableImport +if NOT DEFINED JAVA_HOME goto err + +REM ***** JAVA options ***** +set JAVA_OPTS=^ + -Dlog4j.configuration=log4j-tools.properties^ + -Dstorage-config=storage-conf.xml + +REM ***** CLASSPATH library setting ***** + +REM Ensure that any user defined CLASSPATH variables are not used on startup +set CLASSPATH= + +REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable. +for %%i in (%CASSANDRA_HOME%\lib\*.jar) do call :append %%~fi +goto okClasspath + +:append +set CLASSPATH=%CLASSPATH%;%1%2 +goto :eof + +:okClasspath +REM Include the build\classes directory so it works in development +set CASSANDRA_CLASSPATH=%CLASSPATH%;%CASSANDRA_HOME%\build\classes;%CASSANDRA_CONF% + +set CASSANDRA_PARAMS= +set TOOLS_PARAMS= + +FOR %%A IN (%*) DO call :appendToolsParams %%A + +goto runTool + +:appendToolsParams +set TOOLS_PARAMS=%TOOLS_PARAMS% %1 +goto :eof + +:runTool +"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp "%CASSANDRA_CLASSPATH%" "%CASSANDRA_MAIN%" %TOOLS_PARAMS% +goto finally + +:err +echo JAVA_HOME environment variable must be set! +pause + +:finally + +ENDLOCAL diff --git a/bin/sstable2json.bat b/bin/sstable2json.bat new file mode 100644 index 0000000000..81bbe0fb85 --- /dev/null +++ b/bin/sstable2json.bat @@ -0,0 +1,69 @@ +@REM +@REM Licensed to the Apache Software Foundation (ASF) under one or more +@REM contributor license agreements. See the NOTICE file distributed with +@REM this work for additional information regarding copyright ownership. +@REM The ASF licenses this file to You under the Apache License, Version 2.0 +@REM (the "License"); you may not use this file except in compliance with +@REM the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. + +@echo off +if "%OS%" == "Windows_NT" setlocal + +if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD% +if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf +if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.tools.SSTableExport +if NOT DEFINED JAVA_HOME goto err + +REM ***** JAVA options ***** +set JAVA_OPTS=^ + -Dlog4j.configuration=log4j-tools.properties^ + -Dstorage-config=storage-conf.xml + +REM ***** CLASSPATH library setting ***** + +REM Ensure that any user defined CLASSPATH variables are not used on startup +set CLASSPATH= + +REM For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable. +for %%i in (%CASSANDRA_HOME%\lib\*.jar) do call :append %%~fi +goto okClasspath + +:append +set CLASSPATH=%CLASSPATH%;%1%2 +goto :eof + +:okClasspath +REM Include the build\classes directory so it works in development +set CASSANDRA_CLASSPATH=%CLASSPATH%;%CASSANDRA_HOME%\build\classes;%CASSANDRA_CONF% + +set CASSANDRA_PARAMS= +set TOOLS_PARAMS= + +FOR %%A IN (%*) DO call :appendToolsParams %%A + +goto runTool + +:appendToolsParams +set TOOLS_PARAMS=%TOOLS_PARAMS% %1 +goto :eof + +:runTool +echo "%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp "%CASSANDRA_CLASSPATH%" "%CASSANDRA_MAIN%" %TOOLS_PARAMS% +"%JAVA_HOME%\bin\java" %JAVA_OPTS% %CASSANDRA_PARAMS% -cp "%CASSANDRA_CLASSPATH%" "%CASSANDRA_MAIN%" %TOOLS_PARAMS% +goto finally + +:err +echo JAVA_HOME environment variable must be set! +pause + +:finally + +ENDLOCAL diff --git a/contrib/py_stress/stress.py b/contrib/py_stress/stress.py index b53b86fb0f..913356d7ae 100644 --- a/contrib/py_stress/stress.py +++ b/contrib/py_stress/stress.py @@ -53,6 +53,10 @@ except ImportError: print "Cassandra thrift bindings not found, please run 'ant gen-thrift-py'" sys.exit(2) +try: + from thrift.protocol import fastbinary +except ImportError: + print "WARNING: thrift binary extension not found, benchmark will not be accurate!" parser = OptionParser() parser.add_option('-n', '--num-keys', type="int", dest="numkeys", diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 605799e05e..9b7775d1d3 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -81,14 +81,14 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean Runtime.getRuntime().availableProcessors(), StageManager.KEEPALIVE, TimeUnit.SECONDS, - new LinkedBlockingQueue(1 + Runtime.getRuntime().availableProcessors()), + new LinkedBlockingQueue(Runtime.getRuntime().availableProcessors()), new NamedThreadFactory("FLUSH-SORTER-POOL")); private static ExecutorService flushWriter_ = new JMXEnabledThreadPoolExecutor(1, DatabaseDescriptor.getAllDataFileLocations().length, StageManager.KEEPALIVE, TimeUnit.SECONDS, - new LinkedBlockingQueue(1 + 2 * DatabaseDescriptor.getAllDataFileLocations().length), + new LinkedBlockingQueue(DatabaseDescriptor.getAllDataFileLocations().length), new NamedThreadFactory("FLUSH-WRITER-POOL")); private static ExecutorService commitLogUpdater_ = new JMXEnabledThreadPoolExecutor("MEMTABLE-POST-FLUSHER"); diff --git a/src/java/org/apache/cassandra/service/GCInspector.java b/src/java/org/apache/cassandra/service/GCInspector.java index 5c6dcc1056..0e6b79cb17 100644 --- a/src/java/org/apache/cassandra/service/GCInspector.java +++ b/src/java/org/apache/cassandra/service/GCInspector.java @@ -40,7 +40,7 @@ public class GCInspector public static final GCInspector instance = new GCInspector(); private static final Logger logger = LoggerFactory.getLogger(GCInspector.class); - final static long INTERVAL_IN_MS = 10 * 1000; + final static long INTERVAL_IN_MS = 1000; final static long MIN_DURATION = 200; private HashMap gctimes = new HashMap();