See all blog posts

ScyllaDB release: version 1.4


The ScyllaDB team is pleased to announce the release of ScyllaDB 1.4, a production-ready ScyllaDB minor release. ScyllaDB is an open source NoSQL database compatible with Apache Cassandra, with superior performance and consistently low latency. From now on, only critical bugs (showstoppers) will be fixed in 1.4 release series. We will continue to fix bugs and add features on the master branch toward 1.5 and beyond. In parallel, we are already working on ScyllaDB 2.0, with many new goodies.

New features

  • Slow Query Tracing – Identifying slow requests with minimal overhead is critical in production systems. This new feature extends the current tracing that was introduced in ScyllaDB 1.3 to capture only the distributed execution path which takes over a threshold of latency, defined in microseconds. Tracing can be enabled, disabled and configured dynamically using ScyllaDB REST API. More on Slow Query Tracing
  • Native support for Prometheus metric collection – Prometheus and Grafana are the monitoring tools of choice for many ScyllaDB users.
    Until 1.4, ScyllaDB metrics were generated in collectd format, forward to collectd, then forward to collectd_exporter which expose them in an HTTP format Prometheus can use.
    Starting with 1.4, we are cutting the middle man. ScyllaDB will directly export Prometheus compatible metrics in Protocol buffer format. System level metrics will be exported using Prometheus node_exporter.
    ScyllaDB-grafana-monitoring dashboards will be updated to support the new metric format. Users who continue to use ScyllaDB 1.3 or older should make sure to use scylla-grafana-monitoring 0.1 release. Collectd metrics will continue to be supported for backward compatibility.
  • Random Partitioner – a legacy, MD5 base, partitioner added to ScyllaDB for users who are currently using it in Cassandra and want to migrate to ScyllaDB. The default and recommended partitioner is Murmur3Partitioner.
    To use the new partitioner on a new cluster use:
    partitioner: org.apache.cassandra.dht.RandomPartitioner
    on scylla.yaml. More on Random Partitioner, #1438
  • CQL Snappy Compression – ScyllaDB now supports CQL binary protocol compression using Snappy. Read your favorite driver documentation on how to enable Snappy. #1286
  • SStableTools – ScyllaDB packages now include the following Cassandra SSTable tools. #1151
    • json2sstable
    • sstable2json
    • sstablelevelreset
    • sstablemetadata
    • sstablerepairedset
    • sstablesplit

New metrics added in ScyllaDB 1.4

New streaming metrics

  • streaming_total_incoming_bytes
  • streaming_total_outgoing_bytes

New database metrics

  • database_total_operations{type=clustering_filter}
  • database_total_operations{type=total_writes}

New gossip metrics

  • gossip_heart_beat_version – Gossip heart beat version changes every second. If everything is working correctly, the gauge-heart_beat_version output should be 1.0. If not the gauge-heart_beat_version output should be less than 1.0.

New tracing metrics

  • tracing_total_operations{type=”dropped_sessions”}
  • tracing_total_operations{type=”dropped_records”}
  • tracing_total_operations{type=”trace_records_count}
  • tracing_queue_length{type=”cached_records”}
  • tracing_queue_length{type=”pending_for_write_records”}
  • tracing_queue_length{type=”flushing_records”}

New cache metrics

  • cache_total_operations{type=”concurrent_misses_same_key”} – incremented when two queries simultaneously access the same partition, and the partition is not in the cache. This path is currently inefficient in ScyllaDB and is therefore tracked.

Noteworthy bug fix in this release:

  • Improve Repair and data streaming – many improvements was made to improve repair speed and reliability. Among them are: #382 #1617 #1682 #1685 #1655, #1741. If you have any issue with repair or data streaming, for example when adding a node – you should upgrade to 1.4.
  • Decommissioned nodes are not cleaned from gossip info #1704, #1714
  • Leveled compaction: High-level sstable on leveled compaction might not be compacted #1720, uniform token range distribution across sstables in a level > 1 is broken #1719
  • ScyllaDB may crash during trace flushing #1678, #1647 #1605
  • ScyllaDB do not use SSTable promoted index, slowing down large partitions reads #95
  • CQL select with filtering return wrong results. #1684. for example: select count(*) from where c1 = ‘a’ allow filtering;
  • CQL connection compression negotiation is broken #1680
  • ScyllaDB generation of UUID used for truncated_at column in system.local table caused an issue with Cassandra/ScyllaDB C# driver #1196
  • Reading very large columns, or reading from slow disks may cause ScyllaDB to crash #1690 #1622
  • ScyllaDB sometimes report “Exceptional future ignored: std::out_of_range” during boot #1656
  • Wrong networking setup can cause sub-optimal performance of ScyllaDB AMI on server with less than 8 v-cores, like c3.xlarge #1645, #1406
  • scylla.yaml failed to read initial_token string with spaces #1664
  • On server boot, ScyllaDB service may start before networking service, causing ScyllaDB to exit #1618
  • Thrift query for column family size estimation may return out of date result. This issue may affect queries from Presto and Spark, both using this API #1139
  • nodetool compactionstats reports wrong pending tasks number
  • ScyllaDB may return empty query results for some clustering slices #1669
  • scylla_setup did not install scylla as a service #1556
  • ScyllaDB AMI not reachable after kernel update #1597
  • ScyllaDB AMI may fail to start correctly #1707, #1716
  • scylla_setup misleading execution order #1739
  • Grant permissions on a non-existent resource may cause a crash #1790
  • Authorization commands are case sensitive #1791
  • scylla_setup error on Ubuntu 14, when trying to set XFS #1740
  • ScyllaDB Docker did not accept the new –listen-address option

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.