Merge branch 'cassandra-2.1' into trunk Conflicts: CHANGES.txt NEWS.txt bin/cassandra.bat build.xml conf/cassandra-env.sh src/java/org/apache/cassandra/service/CassandraDaemon.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b8717dc2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b8717dc2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b8717dc2 Branch: refs/heads/trunk Commit: b8717dc201c351ad9d11c960169a2c78837e1bc8 Parents: e617d84 150f827 Author: T Jake Luciani <j...@apache.org> Authored: Wed Apr 1 11:11:53 2015 -0400 Committer: T Jake Luciani <j...@apache.org> Committed: Wed Apr 1 11:11:53 2015 -0400 ---------------------------------------------------------------------- CHANGES.txt | 8 +- NEWS.txt | 7 +- bin/cassandra.bat | 11 ++- conf/cassandra-env.ps1 | 13 +++- conf/cassandra-env.sh | 21 ++++-- debian/changelog | 6 ++ .../cassandra/service/CassandraDaemon.java | 77 ++++++++++++++++++-- .../utils/RMIServerSocketFactoryImpl.java | 34 +++++++++ 8 files changed, 154 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b8717dc2/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 2da4af6,913b570..61d9c9c --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,88 -1,4 +1,88 @@@ +3.0 + * Optimise max purgeable timestamp calculation in compaction (CASSANDRA-8920) + * Constrain internode message buffer sizes, and improve IO class hierarchy (CASSANDRA-8670) + * New tool added to validate all sstables in a node (CASSANDRA-5791) + * Push notification when tracing completes for an operation (CASSANDRA-7807) + * Delay "node up" and "node added" notifications until native protocol server is started (CASSANDRA-8236) + * Compressed Commit Log (CASSANDRA-6809) + * Optimise IntervalTree (CASSANDRA-8988) + * Add a key-value payload for third party usage (CASSANDRA-8553) + * Bump metrics-reporter-config dependency for metrics 3.0 (CASSANDRA-8149) + * Partition intra-cluster message streams by size, not type (CASSANDRA-8789) + * Add WriteFailureException to native protocol, notify coordinator of + write failures (CASSANDRA-8592) + * Convert SequentialWriter to nio (CASSANDRA-8709) + * Add role based access control (CASSANDRA-7653, 8650, 7216, 8760, 8849, 8761, 8850) + * Record client ip address in tracing sessions (CASSANDRA-8162) + * Indicate partition key columns in response metadata for prepared + statements (CASSANDRA-7660) + * Merge UUIDType and TimeUUIDType parse logic (CASSANDRA-8759) + * Avoid memory allocation when searching index summary (CASSANDRA-8793) + * Optimise (Time)?UUIDType Comparisons (CASSANDRA-8730) + * Make CRC32Ex into a separate maven dependency (CASSANDRA-8836) + * Use preloaded jemalloc w/ Unsafe (CASSANDRA-8714) + * Avoid accessing partitioner through StorageProxy (CASSANDRA-8244, 8268) + * Upgrade Metrics library and remove depricated metrics (CASSANDRA-5657) + * Serializing Row cache alternative, fully off heap (CASSANDRA-7438) + * Duplicate rows returned when in clause has repeated values (CASSANDRA-6707) + * Make CassandraException unchecked, extend RuntimeException (CASSANDRA-8560) + * Support direct buffer decompression for reads (CASSANDRA-8464) + * DirectByteBuffer compatible LZ4 methods (CASSANDRA-7039) + * Group sstables for anticompaction correctly (CASSANDRA-8578) + * Add ReadFailureException to native protocol, respond + immediately when replicas encounter errors while handling + a read request (CASSANDRA-7886) + * Switch CommitLogSegment from RandomAccessFile to nio (CASSANDRA-8308) + * Allow mixing token and partition key restrictions (CASSANDRA-7016) + * Support index key/value entries on map collections (CASSANDRA-8473) + * Modernize schema tables (CASSANDRA-8261) + * Support for user-defined aggregation functions (CASSANDRA-8053) + * Fix NPE in SelectStatement with empty IN values (CASSANDRA-8419) + * Refactor SelectStatement, return IN results in natural order instead + of IN value list order and ignore duplicate values in partition key IN restrictions (CASSANDRA-7981) + * Support UDTs, tuples, and collections in user-defined + functions (CASSANDRA-7563) + * Fix aggregate fn results on empty selection, result column name, + and cqlsh parsing (CASSANDRA-8229) + * Mark sstables as repaired after full repair (CASSANDRA-7586) + * Extend Descriptor to include a format value and refactor reader/writer + APIs (CASSANDRA-7443) + * Integrate JMH for microbenchmarks (CASSANDRA-8151) + * Keep sstable levels when bootstrapping (CASSANDRA-7460) + * Add Sigar library and perform basic OS settings check on startup (CASSANDRA-7838) + * Support for aggregation functions (CASSANDRA-4914) + * Remove cassandra-cli (CASSANDRA-7920) + * Accept dollar quoted strings in CQL (CASSANDRA-7769) + * Make assassinate a first class command (CASSANDRA-7935) + * Support IN clause on any partition key column (CASSANDRA-7855) + * Support IN clause on any clustering column (CASSANDRA-4762) + * Improve compaction logging (CASSANDRA-7818) + * Remove YamlFileNetworkTopologySnitch (CASSANDRA-7917) + * Do anticompaction in groups (CASSANDRA-6851) + * Support user-defined functions (CASSANDRA-7395, 7526, 7562, 7740, 7781, 7929, + 7924, 7812, 8063, 7813, 7708) + * Permit configurable timestamps with cassandra-stress (CASSANDRA-7416) + * Move sstable RandomAccessReader to nio2, which allows using the + FILE_SHARE_DELETE flag on Windows (CASSANDRA-4050) + * Remove CQL2 (CASSANDRA-5918) + * Add Thrift get_multi_slice call (CASSANDRA-6757) + * Optimize fetching multiple cells by name (CASSANDRA-6933) + * Allow compilation in java 8 (CASSANDRA-7028) + * Make incremental repair default (CASSANDRA-7250) + * Enable code coverage thru JaCoCo (CASSANDRA-7226) + * Switch external naming of 'column families' to 'tables' (CASSANDRA-4369) + * Shorten SSTable path (CASSANDRA-6962) + * Use unsafe mutations for most unit tests (CASSANDRA-6969) + * Fix race condition during calculation of pending ranges (CASSANDRA-7390) + * Fail on very large batch sizes (CASSANDRA-8011) + * Improve concurrency of repair (CASSANDRA-6455, 8208) + * Select optimal CRC32 implementation at runtime (CASSANDRA-8614) + * Evaluate MurmurHash of Token once per query (CASSANDRA-7096) + * Generalize progress reporting (CASSANDRA-8901) + * Resumable bootstrap streaming (CASSANDRA-8838, CASSANDRA-8942) + * Allow scrub for secondary index (CASSANDRA-5174) + - 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) @@@ -292,11 -214,7 +294,8 @@@ Merged from 2.0 (CASSANDRA-8619) * Round up time deltas lower than 1ms in BulkLoader (CASSANDRA-8645) * Add batch remove iterator to ABSC (CASSANDRA-8414, 8666) + * Round up time deltas lower than 1ms in BulkLoader (CASSANDRA-8645) * Fix isClientMode check in Keyspace (CASSANDRA-8687) - * 'nodetool info' prints exception against older node (CASSANDRA-8796) - * Ensure SSTableSimpleUnsortedWriter.close() terminates if - disk writer has crashed (CASSANDRA-8807) * Use more efficient slice size for querying internal secondary index tables (CASSANDRA-8550) * Fix potentially returning deleted rows with range tombstone (CASSANDRA-8558) http://git-wip-us.apache.org/repos/asf/cassandra/blob/b8717dc2/NEWS.txt ---------------------------------------------------------------------- diff --cc NEWS.txt index 3af2f92,0816602..94e225b --- a/NEWS.txt +++ b/NEWS.txt @@@ -13,79 -13,8 +13,79 @@@ restore snapshots created with the prev 'sstableloader' tool. You can upgrade the file format of your snapshots using the provided 'sstableupgrade' tool. +3.0 +=== + +New features +------------ + - A new tool has been added bin/sstableverify that checks for errors/bitrot + in all sstables. Unlike scrub, this is a non-invasive tool. + - Authentication & Authorization APIs have been updated to introduce + roles. Roles and Permissions granted to them are inherited, supporting + role based access control. The role concept supercedes that of users + and CQL constructs such as CREATE USER are deprecated but retained for + compatibility. The requirement to explicitly create Roles in Cassandra + even when auth is handled by an external system has been removed, so + authentication & authorization can be delegated to such systems in their + entirety. + - In addition to the above, Roles are also first class resources and can be the + subject of permissions. Users (roles) can now be granted permissions on other + roles, including CREATE, ALTER, DROP & AUTHORIZE, which removesthe need for + superuser privileges in order to perform user/role management operations. + - Creators of database resources (Keyspaces, Tables, Roles) are now automatically + granted all permissions on them (if the IAuthorizer implementation supports + this). + - SSTable file name is changed. Now you don't have Keyspace/CF name + in file name. Also, secondary index has its own directory under parent's + directory. + - Support for user-defined functions and user-defined aggregates have + been added to CQL. + - Row-cache is now fully off-heap. + - jemalloc is now automatically preloaded and used on Linux and OS-X if + installed. + - Please ensure on Unix platforms that there is no libjnadispath.so + installed which is accessible by Cassandra. Old versions of + libjna packages (< 4.0.0) will cause problems - e.g. Debian Wheezy + contains libjna versin 3.2.x. + - The node now keeps up when streaming is failed during bootstrapping. You can + use new `nodetool bootstrap resume` command to continue streaming after resolving + an issue. + + +Upgrading +--------- + - Pig's CqlStorage has been removed, use CqlNativeStorage instead + - IAuthenticator been updated to remove responsibility for user/role + maintenance and is now solely responsible for validating credentials, + This is primarily done via SASL, though an optional method exists for + systems which need support for the Thrift login() method. + - IRoleManager interface has been added which takes over the maintenance + functions from IAuthenticator. IAuthorizer is mainly unchanged. Auth data + in systems using the stock internal implementations PasswordAuthenticator + & CassandraAuthorizer will be automatically converted during upgrade, + with minimal operator intervention required. Custom implementations will + require modification, though these can be used in conjunction with the + stock CassandraRoleManager so providing an IRoleManager implementation + should not usually be necessary. + - Fat client support has been removed since we have push notifications to clients + - cassandra-cli has been removed. Please use cqlsh instead. + - YamlFileNetworkTopologySnitch has been removed; switch to + GossipingPropertyFileSnitch instead. + - CQL2 has been removed entirely in this release (previously deprecated + in 2.0.0). Please switch to CQL3 if you haven't already done so. + - Very large batches will now be rejected (defaults to 50kb). This + can be customized by modifying batch_size_fail_threshold_in_kb. + - The results of CQL3 queries containing an IN restriction will be ordered + in the normal order and not anymore in the order in which the column values were + specified in the IN restriction. + - Some secondary index queries with restrictions on non-indexed clustering + columns were not requiring ALLOW FILTERING as they should. This has been + fixed, and those queries now require ALLOW FILTERING (see CASSANDRA-8418 + for details). + - 2.1.4 + 2.1.5 ===== + Upgrading --------- - The option to omit cold sstables with size tiered compaction has been http://git-wip-us.apache.org/repos/asf/cassandra/blob/b8717dc2/bin/cassandra.bat ---------------------------------------------------------------------- diff --cc bin/cassandra.bat index 3445af2,fefd3fc..155aaf6 --- a/bin/cassandra.bat +++ b/bin/cassandra.bat @@@ -65,11 -65,13 +65,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^ -Dlogback.configurationFile=logback.xml^ - -Djava.library.path=%CASSANDRA_HOME%\lib\sigar-bin ++ -Djava.library.path=%CASSANDRA_HOME%\lib\sigar-bin^ + -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/b8717dc2/conf/cassandra-env.ps1 ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b8717dc2/conf/cassandra-env.sh ---------------------------------------------------------------------- diff --cc conf/cassandra-env.sh index 4eb4c88,a2f86dd..7df703b --- a/conf/cassandra-env.sh +++ b/conf/cassandra-env.sh @@@ -343,16 -296,6 +359,11 @@@ f #MX4J_ADDRESS="-Dmx4jaddress=127.0.0.1" #MX4J_PORT="-Dmx4jport=8081" +# Cassandra uses SIGAR to capture OS metrics CASSANDRA-7838 +# for SIGAR we have to set the java.library.path +# to the location of the native libraries. +JVM_OPTS="$JVM_OPTS -Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin" + - 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/b8717dc2/src/java/org/apache/cassandra/service/CassandraDaemon.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java index d6b2d24,412a0bf..4594196 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@@ -23,12 -23,10 +23,10 @@@ import java.lang.management.ManagementF 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.rmi.registry.LocateRegistry; + import java.rmi.server.RMIServerSocketFactory; + import java.util.*; - import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeUnit; - import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.StandardMBean;