
The ScyllaDB team is pleased to announce the release of ScyllaDB 1.2, the third production-ready ScyllaDB minor release. ScyllaDB is an open source NoSQL database compatible with Apache Cassandra, with superior performance and consistent low latency.
From now on, only critical bugs (showstoppers) will be fixed in branch-1.2.x. We will continue to fix bugs and add features on the master branch toward 1.2 and beyond. Followup minor releases (1.3, 1.4 etc) will be time-based releases, closed at the end of each month; ScyllaDB 1.3 is due July 2016.
Get started with ScyllaDB 1.2 here. Upgrade instructions from 1.1 to 1.2 here
Please let us know if you encounter any problem.
New features
ALTER KEYSPACE
ScyllaDB now supports the CQL operation ALTER KEYSPACE, #429
For example:
ALTER KEYSPACE users
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 2};
In particular, ScyllaDB now supports updating keyspace replication and allows adding and removing Data Centers dynamically #216, #220
Ubuntu 16.04 packages
Beginning with this release, ScyllaDB will provide official packages for Ubuntu 16.04
Known issue in scylla_setup
on Ubuntu 16: NTP setup phase fails #1345. To bypass, answer No to the NTP setup prompt, and set it up manually.
Simpler installation
ScyllaDB is now installed as a master package, named scylla, that pulls in scylla-server, scylla-jmx, scylla-tools, as well as the new packages scylla-conf and scylla-kernel-conf as dependencies.
- CentOS/RHEL/Fedora
sudo yum install scylla
- Ubuntu
sudo apt-get install scylla
Noteworthy updates in this release are
- Kernel scheduling tuning parameters to assure low latency, #1218
- Support CQL Binary compression #416
- Disable polling in scylla-jmx. Until this release, the scylla-jmx process repeatedly polled information from the scylla process. This consumes CPU and adds latency to ScyllaDB, mostly in the high percentile. Starting with this release, scylla-jmx only queries information from ScyllaDB when it is called over JMX, for example by nodetool. #27
- Fix performance degradation when growing a cluster. This fix significantly smooths the performance spikes caused by data streaming when adding or removing nodes in the cluster
- Fix
nodetool refresh
redundant rewrite of statistics file when used with leveled compaction #1124 - Eliminating compaction starts during shutdown which generated unnecessary error messages #1238
- Fix
CREATE TABLE
ignoring of min_threshold attribute #1257 - Optimize compaction in leveled compaction strategy, reducing the time to extract the list of sstables to be compacted
- Use idle CPU to defragment data in memtables and cache.
Related links
- Get started with ScyllaDB 1.2
- Upgrade from 1.1.x to 1.2.y
- Report a problem
ScyllaDB 1.2 contributions
Amnon Heiman (12):
API utils: Adding rate moving avrage
Add waited avrage rate related object
API: Add helper function for the rate objects
storage_proxy: Change histogram to timed_rate_moving_average_and_histogram
row_cache: Change counter to timed_rate_moving_average_and_histogram
column_family: Change histogram to timed_rate_moving_average_and_histogram
API: column family stats break the map_reduce functionality
API Definition: change cache_service, column_family and storage_proxy to use rate objects
API: change cache_service, column_family and storage_proxy to rate object
idl-compiler: default constructor of complex types
API: column_family count sstable space used correctly
rate_moving_average: mean_rate is not initilized
Asias He (6):
dht: Add default constructor for token
token_metadata: Speed up pending_endpoints_for
gms: Optimize gossiper::is_alive
gossip: Do not insert the same node into _live_endpoints_just_added
storage_service: Catch and fail an invalid configuration with --replace-address
streaming: Reduce memory usage when sending mutations
Avi Kivity (17):
Update scylla-ami submodule
Merge seastar upstream
Merge seastar upstream
sstables: make delete_atomically() throw a distinct exception when cancelled
database: silence atomic deletion cancellation logs during compaction
sstables: silence atomic deletion cancellation logs during sstable deletion
Merge seastar upstream
Merge seastar upstream
Merge seastar upstream
dist: add build dependencies for sctp
Merge seastar upstream
Merge seastar upstream
Merge seastar upstream
config: rename compact_on_idle
config: document defragment_memory_on_idle
dist: tune scheduler for lower latency
Be more conservative when deciding when to shut down due to disk errors
Calle Wilund (14):
messaging_service: Change init to use per-shard tls credentials
auth: Make auth.* schemas use deterministic UUIDs
messaging_service: Add logging to match origin
storage_service: Add logging to match origin
messaging_service: Change tls init to use credentials_builder
cql_server: Use credentials_builder to init tls
transport::server: Do not treat accept exception as fatal
database: Implement update_keyspace
schema_tables: Fix merge_keyspaces to handle alter keyspace
migration_manager: Implement announce_keyspace_update
alter_keyspace_statement: Implement
Cql.g: Handle ALTER KEYSPACE
cql3::statements::cf_prop_defs: Fix compation min/max not handled
alter_keyspace_statement: Handle missing replication strategy
Duarte Nunes (7):
rpc: Secure connection attempts can be cancelled
storage_service: Fix ignored future in on_alive
gossip: Fix modification to shadow endpoint state
gossip: Rename set_heart_beat_state
gossip: Don't timeout when waiting for features
gossip: Refactor waiting for features
gossip: Introduce the gms::feature class
Glauber Costa (7):
memtables: always seal through memtable_list seal function
memtables: isolate logic for disk writes disabled
database: use a single constructor for the column family
database: invert order of elements
database: reorder initialization
database: do not use implicitly stated seal function when closing the CF
database: add a comment explaining the choice of function in CF stop
Gleb Natapov (18):
storage_proxy: add logging for range query row count estimation
storage_proxy: fix calculation of concurrency queried ranges
query: put live row count into query::result
storage_proxy: stop range query with limit after the limit is reached
query: fix non full clustering key deserialization
query: fix result row counting for results with multiple partitions
tests: test for result row counting
gossiper: simplify mark_alive()
gossiper: cleanup mark_alive() even more
query: find latest modification timestamp while calculating result digest
query: add latest modification timestamp to result structure
messaging_service: add timestemp of last modification to READ_DIGEST verb return value
query: add user provided timestamp to read_command
main: change order between storage service and drain execution during exit
messaging_service: abort retrying send during exit
storage_proxy: do only local read repair if non matching data was recently modified
storage_proxy: drop debug output
config: adjust boost::program_options validator to work with db::string_map
Pekka Enberg (16):
Merge seastar upstream
cql3: Clean up result_set class
cql3: Move result_set class implementation to source file
cql3: Add column_specification::all_in_same_table() helper
cql3: Introduce prepared_metadata class
cql3: Specify result set flag ABI explicitly
cql3: Clean up prepared_metadata class
api: Register snitch API earlier
dist/docker: Fetch RPM repository from ScyllaDB web site
transport/server: Add CQL frame LZ4 compression support
Revert "main: change order between storage service and drain execution during exit"
release: prepare for 1.2.rc1
Revert "Revert "main: change order between storage service and drain execution during exit""
Update scylla-ami submodule
release: prepare for 1.2.rc2
Revert "Be more conservative when deciding when to shut down due to disk errors"
Piotr Jastrzebski (7):
Stop scanning keyspace data directory when populating.
Introduce clustering_ranges type.
Slice data with clustering key range in sstable reader
Make memtable mutation_reader slice using clustering ranges.
Pass clustering_row_ranges to mutation readers.
Add lksctp-tools-devel to required packages
Use idle CPU to compact LSA memory
Raphael S. Carvalho (14):
sstables: optimize leveled compaction strategy
compaction: add support to parallel compaction on the same column family
compaction_manager: fix indentation
main: stop compaction manager earlier
compaction_manager: simplify code that waits for cleanup termination
compaction_manager: stop compaction tasks in parallel
db: fix migration of sstables with level greater than 0
tests: check that overlapping sstable has its level changed to 0
sstables: fix statistics rewrite
tests: add test for statistics rewrite
db: introduce upload directory for sstable migration
db: fix read consistency after refresh
compaction: disable parallel compaction for leveled strategy
compaction: leveled: improve log message for overlapping table
Shlomi Livne (1):
dist/common: Update scylla_io_setup to use settings done in cpuset.conf
Takuya ASADA (20):
dist/ami: Add --repo option to build_ami.sh to construct AMI with custom repository URL
dist/ubuntu: move lines from rules to .install/.dirs/.docs
dist/common/scripts: add interactive prompt for package installation check, also check scylla-tools installed
dist: Extract scylla.yaml and create metapackage
dist/redhat/centos_dep: move scylla-env to dist/common to share with Ubuntu
dist/common/dep: add Ubuntu support for scylla-env
dist/ubuntu/dep: introduce scylla-gdb-7.11 for Ubuntu 14.04LTS
dist/common/scripts: add scylla.yaml parser for scripts
dist/common/scripts: On scylla_io_setup, run iotune on correct data directory which specified on scylla.yaml
dist/common/systemd: drop hardcoded path
dist/common/scripts: don't proceed to run scylla_raid_setup when disks not selected, on interactive RAID setup
dist: drop 'sudo -E' and SETENV for security reason, source envfile from scripts
dist/common/scripts: replace IFNAME variable when --nic specified to scylla_sysconfig_setup
dist: move '--cpuset' and '--smp' configuration to scylla_cpuset_setup / cpuset.conf
dist/common/scripts: drop special condition to enable SET_NIC on AMI, do this on AMI installation script
dist/common/scripts: specify queue settings for posix_net_conf.sh on scylla_prepare
dist/ami: fix dependency unresolved error on AMI build script with local package, by adding scylla-conf package
dist/common/scripts: Ask to set SET_NIC=yes on scylla_setup interactive prompt
dist/ubuntu: fix incorrect dependency package name
dist/ubuntu: don't rebuild dependency packages by default
Tomasz Grabiec (8):
migration_manager: Fix schema syncing with older version
schema_registry: Fix possible hang in maybe_sync() if syncer doesn't defer
tests: Add unit tests for schema_registry
migration_manager: Invalidate prepared statements on every schema change
storage_proxy: Improve error reporting
storage_proxy: Add trace-level logging for mutating
config: Fix typos
Revert "config: adjust boost::program_options validator to work with db::string_map"
Yoav Kleinberger (3):
tools/scyllatop: log input from collectd for easier debugging
tools/scyllatop: improved user interface: scrollable views
docker: fix Ubuntu Dockerfile-
ScyllaDB-jmx contributions
Amnon Heiman (24):
ColumnFamilyStore: Preparation for removing the pull mode
StreamingMetrics: Preparation for removing pull mode
pom: Add mx4j dependency
APIMBeanIntrospector: Creating an introspector for the MBeanserver
Adding the APIMBeanServer
Adding the APIBuilder
RMIServerSocketFactoryImpl: regsiter the APIBuilder
Main: remove the pulling registration
APIMBeanServer: overload the queryName implementation
scylla-jmx: set the APIBuilder in the command line
CacheEntry: Support caching of jsonobject
APIClient: Support for non pull APIMeter
APIMeter: Move out of pull mode
APIHistogram: Support APITimer
APITimer: Non pull based Timer
APIMetrics, APIMetricsRegistry: Return APIMeter and APITimer
LatencyMetrics: Move to APITimer
ClientRequestMetrics: Using the APITimer
CacheMetrics: Switch to APITimer
CacheService: Do not get non existing caches metrics
CompactionMetrics: Use APITimer
DroppedMessageMetrics: Change APISettableMeter to APIMeter
MessagingService: Move to APITimer and drop the pulling
APITimer: sum should return a value and values are in ns
Avi Kivity (1):
dist: change scylla-jmx process name from 'java' to 'scylla-jmx'
Pekka Enberg (3):
release: prepare for 1.2.rc1
dist/redhat: Fix RPM package build
release: prepare for 1.2.rc2
Takuya ASADA (7):
dist: #!/bin/bash for all scripts
dist/ubuntu: generate correct distribution codename on debian/changelog
dist/ubuntu: resolve build time dependency by mk-build-deps command
dist/ubuntu: fix build error on Ubuntu 16.04
dist: Support systemd for Ubuntu 15.10/16.04
dist/ubuntu: chmod a+rx on build_deb.sh
dist/redhat: fix rpm build error