• Apache Cassandra
  • Technical
Apache Cassandra 2.1.19, 2.2.11, 3.0.15 and 3.11.1 Available now through Instaclustr’s Managed Service

Instaclustr announces the immediate availability of Apache Cassandra 2.1.19, 2.2.11, 3.0.15 and 3.11.1 through the Instaclustr Managed Service. These versions contain many significant bug fixes, demonstrating the recently renewed focus of the Apache project on release quality. Thanks to all the contributors who helped get these releases completed!

We have provided a summary of the changes contained in these versions below. For 3.0.15 and 3.11.1 in particular, these bug fixes are significant and reasonably likely to impact most users eventually. As a result, the Instaclustr Technical Operations and Support Team will be contacting all customers running Cassandra 3.x over the next couple of weeks to plan an upgrade of your clusters.

Should you have any questions or wish to proactively arrange an upgrade, please contact [email protected].

Summary of Changes

All new versions:

CASSANDRA-13700: Critical bug fix for gossip. Low probability race condition that could cause node instability in certain circumstances.

Numerous other more minor fixes.

3.0.15 and 3.11.1:

Numerous major fixes for Materialized Views. However, subsequent to these releases, the project has issued a warning about the limitations of the current materialized views implementation and will mark it experimental in a future release (see note from Apache here). We will be releasing a detailed blog post shortly regarding Instaclustr’s support for Materialized Views.

  • CASSANDRA-12952 Ensure view and base table schemas are always in sync during ALTER’s
  • CASSANDRA-13737 Ensure node can still start if a MV is found that has no corresponding base table. Possible for a MV to hang around after a base table is dropped, if this happens the node wouldn’t be able to start.
  • CASSANDRA-11500 Large amount of correctness fixes for Materialised views, to do with timestamps and TTL’s. Should make using timestamps and TTL’s with MV’s much safer.
  • CASSANDRA-13069 Fix batchlog writes for node movements. Node movements (JOINING/LEAVING/MOVING) could result in inconsistent view data
  • CASSANDRA-13787 Support range tombstones properly in multi-slices. Range tombstones weren’t being applied properly to MV’s, resulting in inconsistent view data.
  • CASSANDRA-13798 Revert CASSANDRA-10368 of supporting non-PK column filtering due to correctness. Filtering a non-PK column from the base in a MV PK is not possible without causing massive consistency issues between view and base in many circumstances. It has been disabled by default, however can still be enabled with the JVM property cassandra.mv.allow_filtering_nonkey_columns_unsafe=true.

Various fixes for short read protection (which ensures that limit queries return available rows up to the limit even with filtering):

  • CASSANDRA-13794 Corrections to short read protection which should result in performance improvements for some use cases.
  • CASSANDRA-13747 Fix assertion error in short read protection. Rare but could result in read failures.
  • CASSANDRA-12872 Fix counter application order in short read protection. Fixes bug that resulted in missing rows in result when using LIMIT/paging.
  • CASSANDRA-13880 Fix short read protection for tables with no clustering columns. Resulted in extra queries for non-existent rows.
  • CASSANDRA-13595 Fix short read protection when performed at end of partition in range query.

Other fixes:

  • CASSANDRA-13482 Fix AssertionError when reading a non-existing row with row cache enabled.
  • CASSANDRA-13696 Fix Digest mismatch Exception if hints file has UnknownColumnFamily – Major bug, could cause all nodes to go down and requires removing hints to fix.
  • CASSANDRA-13711 Fix writetime for null columns
  • CASSANDRA-13691 Fix serialisation of counter cells from pre 2.1. Would result in errors reading counters in a partially upgraded cluster where the counters were created in 2.0.
  • CASSANDRA-13730 Dropping a table should remove any entries for the table in the dropped_columns system table. Could result in broken backups (unable to restore) if you had historically dropped columns for a table that you wanted to restore.
  • CASSANDRA-13719 Fix assertion error when read repairing range tombstones mixed with partition deletions
  • CASSANDRA-13363 Racy read command serialisation could cause errors and outages. Could have affected clusters with secondary indexes.
  • CASSANDRA-13756 Make StreamingHistogram thread safe. This fixes a major bug that could have resulted in corruption of SSTables.
  • CASSANDRA-13655 Don’t ignore range deletes in a CAS/LWT batch. If you were doing range deletes on LWT batches they would not have applied.
  • CASSANDRA-13717 Fix use of Tuple’s as clustering columns with DESC order. INSERT’s would previously fail when using a Tuple in your clustering key with descending order.
  • CASSANDRA-13123 Clean up inactive commitlogs before shut down. Previously a drain might interrupt cleanup of old commitlogs and thus they would be retained and replayed on restart, leading to longer restart times.
  • CASSANDRA-13619 Fix buffer overflow exception that occurs when flushing hints. Occurs mostly if many hints are being generated (many nodes are down)
  • CASSANDRA-12373 and CASSANDRA-12235 Fix super columnfamilies to be properly supported in 3.0, restoring backwards compatibility. Super columns did not previously work in 3.
  • CASSANDRA-13149 Fix support for prepending to a list type. Prepending was throwing AssertionErrors in some cases due to timing issues.
  • CASSANDRA-13911 Fixes IllegalStateException caused for some SELECT queries because an iterator is not fully consumed. Resolves this error message: “Cannot call hasNext() until the previous iterator has been fully consumed”
  • CASSANDRA-13909 Improve truncate performance

3.11.1

  • CASSANDRA-13754 Fix memory leak in Btree.Builder. If suffering from OutOfMemory on 3.11 this may be the reason why.
  • CASSANDRA-13418 Compaction option for TWCS to ignore overlapping SSTables when expiring an SSTable. This option can be used in time-series append only workloads to remove the side effect of read repairs causing old data being brought into earlier windows and blocking removal of SSTables. It should only be used in append-only TWCS workloads.
  • CASSANDRA-13512 Fix SASI full-text search with standard analyzer in multi-node environments.
  • CASSANDRA-13641 Properly evict pstmts from prepared statements cache. Fixes startup issues where too many prepared statements are present in the cache.