Scylla Rust Driver 0.1.0 released!

233 views
Skip to first unread message

Piotr Sarna

<sarna@scylladb.com>
unread,
Apr 7, 2021, 10:41:23 AM4/7/21
to ScyllaDB users, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
The (extended) Scylla team is pleased to announce the first release of
Scylla Rust Driver 0.1.0 - a brand new, asynchronous CQL driver for
Rust, optimized for Scylla, but also compatible with Apache Cassandra!

Our new driver is capable of the following, and much more:
 * Asynchronous API based on Tokio (tokio.rs)
 * Token-aware routing
 * Shard-aware routing (specific to Scylla)
 * Prepared statements
 * Query paging
 * Compression (LZ4 and Snappy algorithms)
 * CQL binary protocol version 4
 * Batch statements
 * Configurable load balancing policies
 * Driver-side metrics
 * TLS support (based on openssl)
 * Configurable retry policies
 * Authentication support
 * CQL tracing

Scylla Rust Driver was officially born during Scylla's internal
developer hackathon:
https://www.scylladb.com/2021/02/17/scylla-developer-hackathon-rust-driver/
The original team:
 - Kamil Braun
 - Piotr Dulikowski
 - Pekka Enberg
 - Piotr Sarna

... but the development didn't stop, and was instead taken up by a team
of students from the University of Warsaw as part of Scylla's annual
student projects programme.
The student project team consists of:
 - Piotr Dulikowski [mentor]
 - Piotr Sarna      [mentor]
 - Jan Ciołek
 - Kajetan Husiatyński
 - Michał Sala
 - Anita Śledź

Special thanks for the students for their contribution to the open
source world!

Meanwhile, despite the fact that our driver is really young, we already
accepted a few contributions from the community as well!
Special thanks go to:
 - @Jasperav
 - @dtzxporter

The source code of the driver can be found here:
 * https://github.com/scylladb/scylla-rust-driver
Contributions are most welcome!

The official crates.io registry entry is here:
 * https://crates.io/crates/scylla

Thank you, please don't hesitate to download and test the driver, we're
waiting for YOUR feedback!

Benny Halevy

<bhalevy@scylladb.com>
unread,
Apr 7, 2021, 10:44:10 AM4/7/21
to scylladb-users@googlegroups.com, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
Bravo!

Kudos the (extended) team!

Peter Corless

<peter@scylladb.com>
unread,
Apr 7, 2021, 10:46:35 AM4/7/21
to scylladb-users@googlegroups.com, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
This is awesome stuff! Thank you to all the contributors and testers. And special thanks to the students and supporting staff at the University of Warsaw!

-Peter.


--
You received this message because you are subscribed to the Google Groups "ScyllaDB users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scylladb-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scylladb-users/d8d2a6bb-20b2-7747-d19d-33388216e7af%40scylladb.com.

Piotr Sarna

<sarna@scylladb.com>
unread,
Apr 7, 2021, 11:25:59 AM4/7/21
to ScyllaDB users, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
Oh and here's a good starting point: a documentation book based on mdbook, courtesy of Jan Ciołek:

Ivan Prisyazhnyy

<ivan@scylladb.com>
unread,
Apr 7, 2021, 11:56:21 AM4/7/21
to ScyllaDB users, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
Congratulations! It's very cool to see this project lives!
> --
> You received this message because you are subscribed to the Google Groups "ScyllaDB users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to scylladb-user...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/scylladb-users/CAJgK%3DDF-P6xTkHO6WP%2B%3D7N9_L1H%3Dq-xH-V-ML9yxdgSMY815sw%40mail.gmail.com.

Benny Halevy

<bhalevy@scylladb.com>
unread,
Apr 7, 2021, 1:31:52 PM4/7/21
to scylladb-users@googlegroups.com, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan
Nice!

By the way, is scylla::transport::load_balancing::{RoundRobinPolicy, TokenAwarePolicy} shard aware?

Jan Ciołek

<jc406120@students.mimuw.edu.pl>
unread,
Apr 7, 2021, 1:57:43 PM4/7/21
to Benny Halevy, Kajetan Husiatyński, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, scylladb-users@googlegroups.com, Piotr Dulikowski, Tzach Livyatan

All queries are shard aware and there is no way to turn off shard awareness.
If a token is available the query is sent to the correct shard, otherwise to a random one.
Thanks, added to the docs

Benny Halevy

<bhalevy@scylladb.com>
unread,
Apr 7, 2021, 2:54:32 PM4/7/21
to Jan Ciołek, Kajetan Husiatyński, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, scylladb-users@googlegroups.com, Piotr Dulikowski, Tzach Livyatan


On Wed, Apr 7, 2021, 20:57 Jan Ciołek <jc40...@students.mimuw.edu.pl> wrote:

All queries are shard aware and there is no way to turn off shard awareness.
If a token is available the query is sent to the correct shard, otherwise to a random one.
Thanks, added to the docs

Awesome. Thanks!
This could grow into a very important driver over time.

Piotr Sarna

<sarna@scylladb.com>
unread,
Jun 25, 2021, 8:22:48 AM6/25/21
to ScyllaDB users, Kajetan Husiatyński, Jan Ciołek, Michał Sala, Anita Śledź, Pekka Enberg, Kamil Braun, Piotr Dulikowski, Tzach Livyatan, Peter Corless
The Scylla team is pleased to announce Scylla Rust Driver 0.2.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also
compatible with Apache Cassandra!
Our Rust driver now also has an official documentation page:
https://rust-driver.docs.scylladb.com/ , thanks to Laura Novich and
David Garcia's contributions.

=== Notable changes ===

Features:

 * Waiting for schema agreement
   The driver is now capable of awaiting schema agreement after schema
changes:
   > session.await_schema_agreement().await?

 * Speculative execution support
   The driver now supports setting various speculative execution
policies, used when responses do not arrive in time. Currently, the
speculative execution can be based on a simple timeout or on specific
percentile values.

 * More control over paging
   Except for the existing iterator-based API, queries can now return
their paging state. The paging state can be later used to resume the
next query from where the previous one left off.

 * Configurable connect timeout
   Sessions can now specify how long they are willing to wait for
connections. It can be done via a new connect_timeout parameter in
SessionConfig

 * Support for schema change events
   The driver is now capable of receiving schema change CQL events from
the cluster

 * Reusable SessionBuilder
   The session builder now supports calling .build() on it multiple
times, which allows preparing the configuration once and then using it
to establish multiple CQL sessions.

 * Automatic shard-aware port picking (Scylla-only)
   The driver will now probe the cluster for its shard-aware port
configuration, and if it finds one, it will automatically switch to
using more efficient shard-aware ports

 * Default port: 9042
   It's now possible to omit the explicit port specification when
creating a session. In that case, CQL's default 9042 port will be used.

Performance:

Various performance fixes were applied, based on benchmarks and
profiling results. Most notably, a couple of synchronization bottlenecks
were avoided with the help of the arc_swap crate. We also reduced the
number of writes needed to send a request from 2 to 1, which speeds up
the operation and also avoid the pitfall of using Nagle's algorithm and
delayed ACK at the same time. Also, tcp nodelay option is now set to
true by default in order to avoid latency spikes.

Fixes:

Lots of small fixes are introduced in this release. A problem with
picking source ports (that we hit on Windows) is now solved. We also
properly propagate authentication errors to the users.

===

The source code of the driver can be found here:
  * https://github.com/scylladb/scylla-rust-driver
Contributions are most welcome!

The official crates.io registry entry is here:
  * https://crates.io/crates/scylla

Thank you for your attention, please do not hesitate to contact us if
you have any questions, issues, feature requests, or are simply
interested in our driver!

Contributors since last release:
commits|author
    26  Michał Sala
    25  Piotr Sarna
    18  Piotr Dulikowski
     5  Kejmer
     3  Jan Ciołek
     3  altanozlu
     2  Pekka Enberg
     1  Anita Śledź
     1  David Garcia
     1  Jasperav
     1  Kajetan Husiatyński
     1  dgarcia360
     1  lauranovich
Reply all
Reply to author
Forward
0 new messages