Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 May 18:19
· 7 commits to main since this release
11edb1e

v1.0.0 is packed with a lot of new features and bug fixes. Some high-level details include:

  • PostgreSQL compatible API: Implement a PostgreSQL wire protocol (v3) compatible API, including read-only endpoints, tls configuration, and addition of unnest table-valued function (similar to rarray) that accepts postgres arrays into tables for bulk queries (#83, #337, #405,#174, #283)
  • HTTP API: Add v1/updates/:table endpoint for streaming lightweight primary key updates for a table, v1/health endpoint to query current health of corrosion node, and accept all JSON types for SQLite params input (#262, #423)
  • State synchronization: Parallel synchronization with many deadlock and bug fixes (#78, #201), more efficient format for sending changes between nodes and prioritization of more recent changes (#373), burstable change processing (#431).
  • Bookkeeping & change processing: Reduced locks around internal bookie structure (#433), and reduce info kept in-memory for bookkeeping (#189) and many fixes around partials, gaps, and buffered versions.
  • Rust client (corro-client): typed query events and related API cleanups (#126)
  • CLI: corrosion consul sync will now bundle services and checks in a single transaction (changeset) (#73)
  • Schema migration: Support existing tables being added to the schema (#64)
  • Observability: richer metrics and logging for various parts of Corrosion (including subscription and channel-capacity signals) (#468, #472), and stronger Antithesis coverage (#463)
  • Garbage Collection: Add optional garage collection for tables that don't reuse primary keys (418)

Migrating from Corrosion v0.1.0 to v1.0.0:

v1.0.0 introduces some breaking changes, notably the database schema has changed. The most significant database changes are:

  • The clock tables (<table>__crsql_clock) have a new schema.
  • The __corro_bookkeeping table has been removed.

Because of these schema differences, a running v0 cluster cannot be upgraded
in-place. Instead, the entire cluster must be re-bootstrapped from a single
snapshot. Please see reseeding corrosion

Thanks to everyone who made a contribution!