Overview

Benefits of defining Major vs Minor versions for Users

  • Intuition and some structure of what might be in NEWS.txt and CHANGES.txt
  • Planning Upgrade paths. e.g. it's ok to upgrade 4.0 to 4.2,  but not 4.0 to 6.0
  • Expectation of when deprecated features and APIs will be removed (hard break)

Benefits of defining Major vs Minor versions for Dev community

  • Re-use of industry standard
  • Common understanding for removal of features
  • Less confused and annoyed users

Benefits of defining Patch versions for Users

  • Safety in upgrades.
  • Reduced testing before upgrading.

Benefits of defining Patch versions for Dev community

  • Reduce Committers time on reviewing by focusing development on trunk.
  • Reducing complexity of forward-merging by limiting the types of patches going into release branches. 
  • More users on more recent patch versions.

Patch versions

  • Strictly speaking, only bugs that are non-disruptive and non-API breaking. Consensus is used to include bugs that impact existing behaviour/interfaces.
  • There are lots of very minor improvements, particularly in certain parts of the code, that make sense to include. Consensus is used to include these in lieu of formal guidelines.


Versioning in Components

Areas of Compatibility

  • CQL
  • SSTable format
    SSTable format consists of two letters version descriptor (in ancient releases of Cassandra it was just one letter). The two letters denote major and minor version of an SSTable. The versioning is independent for each SSTable format (which will start to make sense once CEP-17 lands in). Major version change requires a new major version of Cassandra, and therefore it cannot happen in a minor release.
    Minor SSTable format must be forward compatible for any minor version change. That is, any previous minor release of Cassandra must be able to read any SSTable created by further minor release of Cassandra. For example, Cassandra 4.0 must be able to read SSTables created by Cassandra 4.1. Breaking that requirement by a new SSTable format is a justification for bumping its major version, and thus the major version of Cassandra.
    One of the frequently updated components of an SSTable is STATS. According to the above rules, it is allowed to add new fields to the statistics metadata at the end of a file because such a file still can be read by the previous minor version of Cassandra. Though, removing, modifying or changing order of fields, requires a new major version.
  • Server

Code Components

  •  …

Non Versioned Components

  • Website (top-level) documentation
  • Cassandra-builds repository
  • Cassandra-dtest repository


Applying Semantic Versioning

Major Changes

  • Removing a deprecated feature or API
  • Delimitate upgrade paths
  • New major SSTable format version

Minor Changes

  • New minor SSTable format version

Patch Changes

  • Bug fixes
  • API invisible minor improvements
  • … 




Notes:


Easy java packages to compartmentialise… -- SASI, 2i, (SAI)
 -- Security and Auth
 -- Triggers
 -- Auditing and FQL
 -- Tracing and Diagnostics

Component list from 4.0 Testing…


Component list from JIRA…

ComponentStatusIssuesLeadDescriptionDefault assigneeActions

Build

ACTIVE

135 Issues



Project default

Operations

CI

ACTIVE

108 Issues



Project default

Operations

Cluster/Gossip

ACTIVE

40 Issues



Project default

Operations

Cluster/Membership

ACTIVE

30 Issues



Project default

Operations

Cluster/Schema

ACTIVE

41 Issues



Project default

Operations

Consistency/Batch Log

ACTIVE

6 Issues



Project default

Operations

Consistency/Bootstrap and Decommission

ACTIVE

20 Issues



Project default

Operations

Consistency/Coordination

ACTIVE

42 Issues



Project default

Operations

Consistency/Hints

ACTIVE

26 Issues



Project default

Operations

Consistency/Repair

ACTIVE

115 Issues



Project default

Operations

Consistency/Streaming

ACTIVE

19 Issues



Project default

Operations

CQL/Interpreter

ACTIVE

46 Issues



Project default

Operations

CQL/Semantics

ACTIVE

15 Issues



Project default

Operations

CQL/Syntax

ACTIVE

20 Issues



Project default

Operations

Dependencies

ACTIVE

78 Issues



Project default

Operations

Documentation/Blog

ACTIVE

28 Issues



Project default

Operations

Documentation/Javadoc

ACTIVE

7 Issues



Project default

Operations

Documentation/NEWS.txt

ACTIVE

4 Issues



Project default

Operations

Documentation/Website

ACTIVE

119 Issues



Project default

Operations

Feature/2i Index

ACTIVE

208 Issues



Project default

Operations

Feature/Authorization

ACTIVE

44 Issues



Project default

Operations

Feature/Change Data Capture

ACTIVE

4 Issues



Project default

Operations

Feature/Compression

ACTIVE

13 Issues



Project default

Operations

Feature/Counters

ACTIVE

3 Issues



Project default

Operations

Feature/Encryption

ACTIVE

9 Issues



Project default

Operations

Feature/KMS Vault

ACTIVE

0 Issues



Project default

Operations

Feature/Lightweight Transactions

ACTIVE

137 Issues



Project default

Operations

Feature/Materialized Views

ACTIVE

153 Issues



Project default

Operations

Feature/SASI

ACTIVE

64 Issues



Project default

Operations

Feature/Super Columns

ACTIVE

0 Issues



Project default

Operations

Feature/Transient Replication

ACTIVE

10 Issues



Project default

Operations

Feature/UDA

ACTIVE

1 Issue



Project default

Operations

Feature/UDF

ACTIVE

0 Issues



Project default

Operations

Feature/UDT

ACTIVE

2 Issues



Project default

Operations

Feature/Virtual Nodes

ACTIVE

7 Issues



Project default

Operations

Feature/Virtual Tables

ACTIVE

12 Issues



Project default

Operations

Legacy/Coordination

ACTIVE

214 Issues


StorageProxy, Hints, Batchlog, Counters, LWT, Partitioner/Tokens

Project default

Operations

Legacy/Core

ACTIVE

497 Issues


StorageEngine, Types, Serializers

Project default

Operations

Legacy/CQL

ACTIVE

992 Issues


Grammar, Statements, Native Protocol, UDFs/UDAs, JSON

Project default

Operations

Legacy/Distributed Metadata

ACTIVE

179 Issues


Gossip, Schema, Auth

Project default

Operations

Legacy/Documentation and Website

ACTIVE

271 Issues



Project default

Operations

Legacy/Local Write-Read Paths

ACTIVE

397 Issues


Memtables, Commitlog, SSTables, CDC, Key and Row Caches, Low-Level Disk I/O

Project default

Operations

Legacy/Observability

ACTIVE

193 Issues


JMX, Metrics, Tracing, Logging

Project default

Operations

Legacy/Streaming and Messaging

ACTIVE

303 Issues


MessagingService, Bootstrap, Repair, Bulk Loading

Project default

Operations

Legacy/Testing

ACTIVE

536 Issues


CCM, dtest

Project default

Operations

Legacy/Tools

ACTIVE

1285 Issues


stress, nodetool, cqlsh, various (sstableloader, sstablescrub, sstablerepairedset, etc)

Project default

Operations

Local/Caching

ACTIVE

5 Issues



Project default

Operations

Local/Commit Log

ACTIVE

20 Issues



Project default

Operations

Local/Compaction

ACTIVE

374 Issues



Project default

Operations

Local/Compaction/DTCS

ACTIVE

0 Issues



Project default

Operations

Local/Compaction/LCS

ACTIVE

8 Issues



Project default

Operations

Local/Compaction/STCS

ACTIVE

1 Issue



Project default

Operations

Local/Compaction/TWCS

ACTIVE

1 Issue



Project default

Operations

Local/Config

ACTIVE

301 Issues


Configuration and environment

Project default

Operations

Local/Memtable

ACTIVE

11 Issues



Project default

Operations

Local/Other

ACTIVE

39 Issues



Project default

Operations

Local/Scripts

ACTIVE

5 Issues



Project default

Operations

Local/SSTable

ACTIVE

58 Issues



Project default

Operations

Local/Startup and Shutdown

ACTIVE

108 Issues


Startup and Shutdown

Project default

Operations

Messaging/Client

ACTIVE

39 Issues



Project default

Operations

Messaging/Internode

ACTIVE

57 Issues



Project default

Operations

Messaging/Thrift

ACTIVE

6 Issues



Project default

Operations

Observability/JMX

ACTIVE

12 Issues



Project default

Operations

Observability/Logging

ACTIVE

26 Issues



Project default

Operations

Observability/Metrics

ACTIVE

76 Issues



Project default

Operations

Observability/Tracing

ACTIVE

5 Issues



Project default

Operations

Packaging

ACTIVE

295 Issues


Project default

Operations

Sidecar

ACTIVE

0 Issues



Project default

Operations

Test/benchmark

ACTIVE

15 Issues



Project default

Operations

Test/burn

ACTIVE

2 Issues



Project default

Operations

Test/dtest/java

ACTIVE

135 Issues



Project default

Operations

Test/dtest/python

ACTIVE

425 Issues



Project default

Operations

Test/fuzz

ACTIVE

4 Issues



Project default

Operations

Test/unit

ACTIVE

170 Issues



Project default

Operations

Tool/auditlogging

ACTIVE

5 Issues



Project default

Operations

Tool/bulk load

ACTIVE

7 Issues



Project default

Operations

Tool/cqlsh

ACTIVE

43 Issues



Project default

Operations

Tool/diff

ACTIVE

12 Issues



Project default

Operations

Tool/external

ACTIVE

2 Issues



Project default

Operations

Tool/fql

ACTIVE

13 Issues



Project default

Operations

Tool/nodetool

ACTIVE

268 Issues



Project default

Operations

Tool/sstable

ACTIVE

28 Issues



Project default

Operations

Tool/stress

  • No labels