# \[RELEASE\] ScyllaDB 5.4.0 - Part 1

**URL:** <https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084>\
**Category:** Release Notes\
**Tags:** open-source, open-source-release, open-source-5-4\
**Created:** [December 6, 2023, 6:57pm UTC](https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084 "2023-12-06T18:57:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![tzach](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.scylladb.com/tzach/32/172_2.png) [@tzach](https://forum.scylladb.com/u/tzach)\
**Post date:** [December 6, 2023, 6:57pm UTC](https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084/1 "2023-12-06T18:57:54Z")

</div>

The ScyllaDB team is pleased to announce the release of ScyllaDB Open Source 5.4.0, a production-ready release of our open-source NoSQL database.

ScyllaDB 5.4 introduces Repair Base Node Operations (RBNO) for all operations, experimental consistent topology update, experimental S3 backend and many more improvements and bug fixes.

Consistent schema management using Raft will be enabled automatically on upgrade (more below).

ScyllaDB is now supported on RHEL/Rocky 9, while RHEL/CentOS 7 support is deprecated.

RHEL/Rocky 8, Ubuntu 20.04, 22.04, and Debian 10,11 support continue.

Find the ScyllaDB Open Source 5.4 repository for your Linux distribution[here](http://www.scylladb.com/download). [ScyllaDB 5.4 Docker](https://hub.docker.com/r/scylladb/scylla/) is also available.

Only the last two minor releases of the ScyllaDB Open Source project are supported. From now on, only ScyllaDB Open Source 5.4 and ScyllaDB 5.2 will be supported, and ScyllaDB 5.1 will be retired.

(note there is no 5.3 release)

Related Links

- [Get ScyllaDB Open Source 5.4](http://www.scylladb.com/download/) as binary packages (RPM/DEB), AWS AMI, GCP Image and Docker image

- [Upgrade from ScyllaDB 5.2 to ScyllaDB 5.4](https://opensource.docs.scylladb.com/branch-5.4/upgrade/upgrade-opensource/upgrade-guide-from-5.2-to-5.4/index.html)

- [Report a problem](https://github.com/scylladb/scylla/issues)

## Repair Based Node Operations (RBNO)

Repair Based Node Operations were introduced as an experimental feature in ScyllaDB Open Source 4.0. They use repair to stream data for node-operations like replace, bootstrap and others.

In 5.4, RBNO is enabled by default for all operations: remove node,rebuild,bootstrap, and decommission. Replace node operation was already enabled by default.

See [Repair Base Node Operations (RBNO)](https://opensource.docs.scylladb.com/branch-5.4/operating-scylla/procedures/cluster-management/repair-based-node-operation.html) docs and the [“Faster, Safer Node Operations with Repair vs Streaming” blog by Asias He](https://www.scylladb.com/2023/12/07/faster-safer-node-operations-with-repair-vs-streaming/)

## Node Level Metrics

Most ScyllaDB metrics are per-shard, per-node, but not for a specific table. We now export some [per-table metrics](https://github.com/scylladb/scylladb/commit/cb3b808e3f0cdf27b0edded92e805559d74d7a69). These are exported once per node, not per shard, to reduce the number of metrics. [#2198](https://github.com/scylladb/scylladb/issues/2198)

## Guardrails

Guardrails is a framework to protect ScyllaDB users and admins from common mistakes and pitfalls. In this release ScyllaDB includes a new guardrail on the replication factor. It is now possible to specify the [minimum replication factor](https://github.com/scylladb/scylladb/commit/cdedc7905077ed94a3172759ab4f70af1013e061) for new keyspaces via a new configuration item [#8891](https://github.com/scylladb/scylladb/issues/8891).

This matches the same functionality in Apache Cassandra [#CASSANDRA-14557](https://issues.apache.org/jira/browse/CASSANDRA-14557)

The new RF guardrails include the following configuration:

- minimum\_replication\_factor\_fail\_threshold. Default -1 (Disabled)
- minimum\_replication\_factor\_warn\_threshold. Default 3.

More Guardrails are expected in upcoming releases.

## Security

- It is now possible to use [TLS certificates](https://opensource.docs.scylladb.com/branch-5.4/operating-scylla/security/certificate-authentication.html) to authenticate and authorize a user to ScyllaDB. The system can be configured to derive the user role from the client certificate and derive the permissions the user has from that role. [#10099](https://github.com/scylladb/scylladb/issues/10099)

See more on [certificate-authentication docs](https://opensource.docs.scylladb.com/branch-5.4/operating-scylla/security/certificate-authentication.html).

- It is now possible to specify the initial superuser name and password (salted) in scylla.yaml config or command line. Note that config values become redundant as soon as auth tables are initialized. See two new config parameters auth\_superuser\_name, auth\_superuser\_salted\_password below.

## Deprecated and removed features

- As part of the CQLSH refactoring (see above) Python 2is no longer required by ScyllaDB.
- DateTieredCompactionStrategy was [removed](https://github.com/scylladb/scylladb/commit/d6029a195e9d57717617d3aec951031bf18a5554). Users should move to TimeWindowCompactionStrategy. It is already illegal to create new DateTieredCompactionStrategy tables. If you are still using DTCS, migrate to TWCS _before_ upgrading!

## Deployment and install

- ScyllaDB is officially supported on Rocky / RHEL 9.
- RHEL / CentOS 7 support is deprecated.
- ScyllaDB installation will now tune the OS core dump service to allow a [longer time 2](https://github.com/scylladb/scylladb/commit/bf27fdeaa2290c39dbc7160803cc30e82fb0ae10) to dump cores. This is necessary since ScyllaDB allocates all memory and therefore takes a longer time to dump core if an error is encountered. [#5430](https://github.com/scylladb/scylladb/issues/5430)
- The installer now [wipes filesystem signatures](https://github.com/scylladb/scylladb/commit/fdceda20ccb3d15456d5b2af8582a01bd89e3aad) from the individual disks making up a RAID array, preventing problems with reuse of disks. [#13737](https://github.com/scylladb/scylladb/issues/13737)
- We now [tune the Linux kernel’s caching of inodes](https://github.com/scylladb/scylladb/commit/2de168e5689fe8061bef5e8ae732977331eb0e4c) (in-memory structure representing file metadata) to favor evicting inodes quickly. This aims to reduce kernel memory fragmentation when there are large numbers of sstables, as most files comprising an sstable aren’t accessed after the process starts.
- The bundled Prometheus node\_exporter has been [updated](https://github.com/scylladb/scylladb/commit/6c67c270c86b81488307107c0d298545201c5a90) to version 1.6.1.

## UDF / UDA - Preview

Wasm-based User Defined Functions (UDFs) and User Defined Aggregates (UDAs) were introduced as experimental in ScyllaDB 5.1, and we are now promoting them to Preview.

The CQL syntax is compatible with Apache Cassandra. Examples:

CREATE FUNCTION sample ( arg int ) …;

CREATE FUNCTION sample ( arg text ) …;

See [UDF/UDA documentation](https://opensource.docs.scylladb.com/branch-5.4/cql/functions.html#user-defined-functions-experimental) for more information.

Preview features aren’t production-ready, but are made available on a “preview” basis so that users can get early access and provide feedback. Unlike Experimental features, we are committed to the backward compatibility of a preview feature API.

Below are improvements and bug fixes in UDF/UDA.

- The check for whether a [User Defined Function (UDF)](https://opensource.docs.scylladb.com/stable/cql/functions.html#user-defined-functions-experimental) is in use by a [User Defined Aggregate (UDA)](https://opensource.docs.scylladb.com/stable/cql/functions.html#aggregate-functions) before dropping it has been [improved](https://github.com/scylladb/scylladb/commit/cc207a9f4488961780afff9ea844726c6f27630c).
- An issue when a [User Defined Function (UDF)](https://opensource.docs.scylladb.com/stable/cql/functions.html#user-defined-functions-experimental) that is used in a [User Defined Aggregate (UDA)](https://opensource.docs.scylladb.com/stable/cql/functions.html#aggregate-functions) is updated has been fixed. The UDA now [reflects](https://github.com/scylladb/scylladb/commit/6a45881d2266f9304f5e250438be82b9e5652d21) the changes in the modified UDF immediately.
- An issue when using the counter data type in a WebAssembly UDF has been [corrected](https://github.com/scylladb/scylladb/commit/310638e84d3e9cf7e551bece5f595da3bd6b2f24).
- Automatically parallelized aggregation queries on columns of COUNTER type have been [fixed](https://github.com/scylladb/scylladb/commit/61e67b865a68f5b4539fb6f0a755684f3d2ee275) [#12939](https://github.com/scylladb/scylladb/issues/12939)
- When defining a user-defined function, one has to specify the language in the CREATE FUNCTION statement. The language name for WebAssembly functions was [renamed](https://github.com/scylladb/scylladb/commit/d4851ccae7f8a269ec0bf925a9312205ccb09faf) from “xwasm” to “wasm” in preparation for moving it out of experimental status.
- User-defined functions can now have [permission control](https://github.com/scylladb/scylladb/commit/843a5dfc15197eaadb4e46e7252f7b323373b523) via CQL GRANT statements. [#5572](https://github.com/scylladb/scylladb/issues/5572)
- When a WebAssembly user-defined function is compiled, it is now [compiled in a separate thread](https://github.com/scylladb/scylladb/commit/beaa5a9117e23222c6480a04e609a9ccfdb8dae5) in order to avoid stalling the reactor and inducing high latency. [#12904](https://github.com/scylladb/scylladb/issues/12904)
- The WebAssembly [documentation is now user-visible](https://github.com/scylladb/scylladb/commit/52eb70aef00e4cf3785ef469bcb9355056232e7d), as part of making it ready for production.
- WebAssembly just-in-time compilation moved to a separate thread (see above). The thread now [blocks all signals](https://github.com/scylladb/scylladb/commit/0ba6627d5c0567d5331a2333531cbd846f483972), preventing incorrect signal handling when it was randomly picked to handle a signal. [#13228](https://github.com/scylladb/scylladb/issues/13228)
- User-defined functions gained permission support (see above). We now additionally [check that a function is not a builtin](https://github.com/scylladb/scylladb/commit/0f97d464d32bc884b422ea9721a54f82f6408485) before applying permissions.
- WebAssembly functions are translated to machine code in a separate thread to reduce impact on the running system. The thread now [runs with lower priority](https://github.com/scylladb/scylladb/commit/f0aa540e00f8127eb028bc326aee2c728c9bf1f6) to reduce impact further.
- The build system now [automatically compiles](https://github.com/scylladb/scylladb/commit/198738f2b1c5d8eb178899dcfe6f65f5875227fb) Rust and C++ user-defined functions into WebAssembly. Previously, the compiled wasm text was inlined into individual tests.
- User defined function permissions are now [dropped](https://github.com/scylladb/scylladb/commit/9ae1b02144ff4752cb1fb58fbf9fcfe3f774f141) when the keyspace containing them is dropped. [#13820](https://github.com/scylladb/scylladb/issues/13820)
- Permissions are now [checked](https://github.com/scylladb/scylladb/commit/1f45c7364c582244069972694d3c9979c94ee2d4) for a user-defined aggregate (UDA) that uses user-defined functions (UDFs). [#13818](https://github.com/scylladb/scylladb/issues/13818)
- We now [disallow the CREATE permission](https://github.com/scylladb/scylladb/commit/96e912e1cf5335235f6877b2c45027ef0e903c39) on a named user defined function (UDF). It is meaningless since a named function must already have been created. [#13822](https://github.com/scylladb/scylladb/issues/13822)
- The permissions granted when a keyspace or function are created have been [adjusted](https://github.com/scylladb/scylladb/commit/52e4edfd5e6773ffd53ddf6ccb51be58175613c5). [#13747](https://github.com/scylladb/scylladb/issues/13747)
- The WebAssembly runtime used to evaluate user defined functions has been [updated](https://github.com/scylladb/scylladb/commit/6bc16047ba63c8cd732789bf70f67143a2ffc2f8) to address vulnerabilities. [#13807](https://github.com/scylladb/scylladb/issues/13807)

## New nodetool implementation - Experimental

The scylla executable can now [act as nodetool](https://github.com/scylladb/scylladb/commit/d9a453e72e94ca7b06ea0be468b3d0301aacd9ed) by executing “scylla nodetool ”.

With time the new scylla nodetool will replace the legacy Java nodetool completely. The new implementation is fully backward compatible with the legacy nodetool.

The following commands are currently implemented:

- compact
- disablebackup
- disablebinary
- disablegossip
- enablebackup
- enablebinary
- enablegossip
- gettraceprobability
- help
- settraceprobability
- statusbackup
- statusbinary
- statusgossip
- Version

For the latest status of nodetool replacement progress see [#15588](https://github.com/scylladb/scylladb/issues/15588)

## Object Storage Support - Experimental

You can store an entire ScyllaDB Keyspace to Amazon S3, or a compatible object store.

Enable the feature by:

1. Enabling keyspace-storage-options experimental

–experimental-features=keyspace-storage-options

1. Setup the S3 endpoint parameter and credentials
2. Create a keyspace with S3 storage option:

CREATE KEYSPACE with STORAGE = { ‘type’: ‘S3’, ‘endpoint’: ‘$endpoint\_name’, ‘bucket’: ‘$bucket’ }

See [Keyspace Storage Options docs](https://opensource.docs.scylladb.com/branch-5.4/cql/cql-extensions.html#keyspace-storage-options).

Note: at this phase, obj-storage is not ready for production, and should be used for testing only.

Note2: there is no ALTER support for the STORAGE parameter.

* * *

Much more on [Part 2](https://forum.scylladb.com/t/realese-scylladb-5-4-0-part-2-cql-api-strongly-consistent-schema-management-alternator-and-more/1085)

---

<div class="post-metadata">

**Author:** ![tzach](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.scylladb.com/tzach/32/172_2.png) [@tzach](https://forum.scylladb.com/u/tzach)\
**Post date:** [December 7, 2023, 6:10pm UTC](https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084/2 "2023-12-07T18:10:05Z")

</div>



---

<div class="post-metadata">

**Author:** ![tzach](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.scylladb.com/tzach/32/172_2.png) [@tzach](https://forum.scylladb.com/u/tzach)\
**Post date:** [December 7, 2023, 6:10pm UTC](https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084/3 "2023-12-07T18:10:13Z")

</div>



---

<div class="post-metadata">

**Author:** ![tzach](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.scylladb.com/tzach/32/172_2.png) [@tzach](https://forum.scylladb.com/u/tzach)\
**Post date:** [December 10, 2023, 7:45am UTC](https://forum.scylladb.com/t/release-scylladb-5-4-0-part-1/1084/4 "2023-12-10T07:45:32Z")

</div>


