See all blog posts

ScyllaDB release: version 1.2

ScyllaDB Release

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.

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

About ScyllaDB Team

ScyllaDB is the world’s fastest wide-column store database: the functionality of Apache Cassandra with the speed of a light key/value store.