• v1.0.0-rc1 afad62939e

    Garage v1.0.0 RC1 Pre-Release

    lx released this 2024-03-28 16:06:07 +00:00 | -115 commits to main since this release

    This release is the first Release Candidate for Garage 1.0.

    The following changes are unique to the 1.0 series:

    New features:

    • Implementation of SSE-C encryption (#602, #730)

    • Implementation of checksum algorithms (#347, #787)

    • Add a repair procedure for block reference counters (#782)

    • The replication_mode configuration parameter is now dividied in replication_factor and consistency_mode, allowing for arbitrary replication factors (#750)

    Bug fixes:

    • Properly maintain consistency when cluster composition is updated (adding or removing nodes) and data is being rebalanced between nodes (#667)

    • Fixes and refactoring in peering manager (#761, #786)

    Other:

    • Remove migration path from Garage v0.5 (#766)

    • Remove the Sled database engine (#767)

    • Internals: remove max_write_errors and max_faults (#760)

    The following changes are included in this release and will also be part of a future v0.9.x release:

    New features:

    • Add snapshotting of metadata db, manual with garage meta snapshot and automatic with the metadata_auto_snapshot_interval configuration parameter (#775)

    • Add a disable_scrub configuration option (#774)

    • CLI: allow manipulating buckets using a prefix of their full hex id (#783)

    • Add support for logging to syslog (#368, #784)

    • Add marker file in data directory that is checked upon startup (#601, #785)

    Bug fixes:

    • Avoid unbounded buffering in RAM, add config option block_ram_buffer_max (#788, #792)

    • Allow utf-8 in headers such as object metadata (#763)

    Other:

    • db engines: refactoring, improved defaults, connection pooling for sqlite backend, testing of multiple backends (#660, #765, #779, #793)

    • refactoring: add request helper (#751)

    • disable unreliable K2V tests (#789, #791)

    • documentation updates (#773, #781)

    Thanks to all of the contributors for this release: jirutka, stefano, Yureka

    Click here to get a binary release suited to your platform (scroll down to "extra builds")

    Downloads
  • v0.8.7 2eb114f422

    Garage v0.8.7 Stable

    lx released this 2024-03-04 14:35:38 +00:00 | 440 commits to main since this release

    This minor version fixes a regression in v0.9.2 which broke presigned URLs. Thanks to asonix for identifying the issue and providing a patch.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.9.3 8670140358

    Garage v0.9.3 Stable

    lx released this 2024-03-04 13:25:40 +00:00 | 41 commits to main since this release

    This minor version fixes a regression in v0.9.2 which broke presigned URLs. Thanks to asonix for identifying the issue and providing a patch.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.9.2 6a7623e90d

    Garage v0.9.2 Stable

    lx released this 2024-03-01 16:18:39 +00:00 | 52 commits to main since this release

    This minor release includes the following improvements and fixes:

    Security fixes:

    • Fix timing side-channel vulnerability in admin/metrics token comparison and in AWS signature v4 verification (#737)

    • Ensure that the correct set of headers (in particular, x-amz-* headers) are included in signature calculation (#735, #745)

    New features:

    • allow to specify custom LMDB map size when using garage convert-db (#691)

    • garage block info can now find blocks using only a prefix of the hash (#682, #712)

    • header overriding in GetObject using response-* query parameters (#650, #713)

    • allow option to bind outgoing RPC sockets to same IP address as listening socket (#638, #721)

    • add health and node status metrics to prometheus exports (#545, #726)

    Bug fixes:

    • allow multi-character delimiters in List* API calls (#692, #711)

    • take into account rpc secret file for CLI commands (#695, #715)

    • fix IP address exchanges upon RPC connection (#558, #721)

    • retry RPC connections when new IP address for a peer is learned (#652, #724)

    • filter nodes Garage tries to reconnect to, to avoid connecting to old nodes (#555, #719)

    • add a lock ON EACH NODE ONLY for CreateBucket and other bucket/key operations (#723, #728)

    Optimization:

    • rewrite of PutObject with potential speed-ups (not benchmarked) (#734)

    • enable LTO in release builds, reduces binary size significantly (#704, #707)

    Other:

    • upgrade Rust toolchain (#705, #710)

    • update most Rust dependencies (#703, #709, #718)

    • import code of the netapp crate into the garage codebase, as new crate garage_net (#717)

    • convert CI pipelines to Woodpecker + improvements and simplifications to CI code (#708, #706)

    • some refactoring (#729, #732, #735)

    • documentation updates (#716, #722, #727, #733, #736, #739)

    Thanks to all of the contributors that have participated in this new version: Armaël Gueneau, emilylange, hartraft, Jonathan Davies, yuka, Zdenek Crha. Thanks to Radicallly Open Security for auditing the code and finding the timing side-channel vulnerabilities.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.6 d94b086db3

    Garage v0.8.6 Stable

    lx released this 2024-03-01 14:05:01 +00:00 | 446 commits to main since this release

    Garage v0.8.6

    This minor release is a security release that fixes the following issues:

    • Fix timing side-channel vulnerability in admin/metrics token comparison and in AWS signature v4 verification (#737, backported in #740)

    • Ensure that the correct set of headers (in particular, x-amz-* headers) are included in signature calculation (#735, #745, backported in #744)

    Thanks to Radicallly Open Security for auditing the code and finding the timing side-channel vulnerabilities.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.9.1 ee57dd922b

    Garage v0.9.1 Stable

    lx released this 2024-01-17 11:59:19 +00:00 | 188 commits to main since this release

    This minor release includes the following improvements and fixes:

    New features:

    • Add support for specifying RPC secret and admin tokens as environment variables (#643)

    • Add allow_world_readable_secrets option to config file (#658, #663, #685)

    Bug fixes:

    • Fix bug in ListObjects and refactoring (#655)

    • Allow 0 as a part number (#670)

    • Ensure increasing timestamps when new objects are created (#543). This patch modifies the internal behavior of PutObject, DeleteObject(s) and CreateMultipartUploads, and may cause a small performance penalty on these endpoints when compared to previous versions.

    • Add missing CORS headers to PostObject response (#609, #656)

    • Monitoring: finer histogram boundaries in Prometheus exported metrics (#531, #686)

    • Fix compilation on MacOS (#654)

    Ecosystem:

    • Jepsen testing (#544), which led to the timestamp fix mentionned above (#543)

    • OpenAPI specification of Admin API v1 (#672)

    • Build system updates to use mold as a linker for local dev builds (#646, #664)

    Other:

    • CLI usability: make clear that full-length node ID = public key' (#688)

    • Documentation improvements (#617, #647, 674)

    Thanks to all of the contributors that have participated in this new version: asonix, Félix Baylac Jacqué, Lapineige, networkException, Quentin Dufour, trinity-1686a.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.5 083e982f5f

    Garage v0.8.5 Stable

    lx released this 2024-01-16 10:31:10 +00:00 | 455 commits to main since this release

    This release includes the following improvements and fixes over v0.8.4:

    New features:

    • Configuration: make LMDB's map_size configurable and make block_size and sled_cache_capacity expressable as strings (such as 10M) (#628, #630)

    • Add support for binding to Unix sockets for the S3, K2V, Admin and Web API servers (#640)

    • Move the convert_db command into the main Garage binary (#645)

    • Add support for specifying RPC secret and admin tokens as environment variables (#643)

    • Add allow_world_readable_secrets option to config file (#658, #663, #685)

    Bug fixes:

    • Use statvfs instead of mount list to determine free space in metadata/data directories (#611, #631)

    • Add missing casts to fix 32-bit build (#632)

    • Fix error when none of the HTTP servers (S3/K2V/Admin/Web) is started and fix shutdown hang (#613, #633)

    • Add missing CORS headers to PostObject response (#609, #656)

    • Monitoring: finer histogram boundaries in Prometheus exported metrics (#531, #686)

    Other:

    • Documentation improvements (#641)

    This will be the last release of the v0.8.x series, unless severe bugs or security flaws are discovered, in which case patch releases will be made until the end of 2024.

    Thanks to all of the contributors that have participated in this new version: Félix Baylac Jacqué, Florian Klink, networkException.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.10.0-beta1 db48dd3d6c

    Garage v0.10.0 beta 1 Pre-Release

    lx released this 2024-01-11 11:38:21 +00:00 | 150 commits to main since this release

    The 0.10.x release cycle of Garage fixes consistency issues that could arise when cluster composition was updated (adding or removing nodes) and data was being rebalanced between nodes.

    This first beta release is the result of work done for the 3rd task of the Garage NLnet project n°2022-12-018 (see #667). The fixed version has been extensively tested using Jepsen (see #544), however this new version has not yet been put in production at Deuxfleurs, therefore a final v0.10.0 release is not due yet.

    A new major version was required because the internal format of the cluster layout has changed, and nodes running version 0.10.x are not able to communicate with nodes running version 0.9.x, however from an end-user perspective, no breaking changes are introduced by this version and the upgrade process does not require manual intervention.

    Several other changes are also included in this release. A full changelog will be published along with v0.10.0, which will be based on v0.9.1 (to be relased) instead of the current v0.9.0.

    Binary builds are available on our download page, in the "Extra Builds" section (below the list of release builds).

    Downloads
  • v0.9.0 952c9570c4

    Garage v0.9.0 Stable

    lx released this 2023-10-10 13:21:45 +00:00 | 296 commits to main since this release

    This release is the final version of Garage v0.9.0.

    Make sure to follow the upgrade procedure to upgrade a v0.8.x cluster to v0.9.0.

    Garage v0.9.0 includes the following BREAKING CHANGES:

    • LMDB is now the default metadata db engine and Sled is deprecated. Make sure you are using the correct value of db_engine in your config file before updating. Sled will be removed in Garage v1.0.

    • Capacity values are now in actual byte units. The translation from the old layout will assign 1 capacity = 1Gb by default, which might be wrong for your cluster. This does not cause any data to be moved around, but users might want to re-assign correct capacities to all their nodes to be future-proof.

    • Multipart uploads that were started in Garage v0.8 will not be visible in Garage v0.9 and will have to be restarted from scratch.

    • Updated admin API endpoints, prefixed by v1/. For endpoints with incompatible syntax, the v0/ endpoints have been disabled; for others the v0/ URLs are translated automatically to their v1/ counterpart. Endpoints under v0/ will be removed in Garage v1.0.

      • affected admin endpoints: GetClusterStatus, GetClusterHealth, GetClusterLayout, UpdateClusterLayout, ApplyClusterLayout, GetKeyInfo, UpdateKey, CreateKey, ImportKey
    • Changes to the garage key CLI:

      • garage key new is renamed to garage key create to be the same as garage bucket create
      • garage key import will not work without the --yes flag and will reject invalid keys (keys that are not generated by Garage)
      • garage key info will no longer display the secret key by default (fix #506)

    Other changes since v0.8.4:

    • Optimal layout assignation algorithm (#296)
    • Full multipart upload semantics (#204, #553)
    • Support for multiple HDDs per server (#218, #625)
    • Support for basic lifecycle configurations (#309, #620)
    • Uniformized serialization conventions in admin API (#377, #381)
    • Added checks to garage key import (#278), renamed garage key new into garage key create (#459)
    • Added the convert_db subcommand to the main Garage binary (#645)
    • Added support for binding API servers to UNIX sockets (#253, #640)
    • Update rmp-serde from 0.15 to 1.1.2
    • s/assignation/assignment (#465)
    • Many updates to the documentation
    • Many smaller changes not tracked by issues or PRs

    Thanks to all of the contributors that have participated in this new version: Florian Klink, Jonathan Davies, Mendes, networkException.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.4 51eac97260

    Garage v0.8.4 Stable

    lx released this 2023-09-05 22:08:51 +00:00 | 496 commits to main since this release

    This bugfix release reverts the netapp dependency upgrade in v0.8.3, which caused an incompatible version of rmp-serde to be used (v1.1 vs v0.15), in turn causing v0.8.2 and v0.8.3 nodes to be unable to run together in a cluster.

    Garage v0.8.3 should be avoided due to its incompatibility with v0.8.2. All users of v0.8.3 should upgrade to this release as soon as possible.

    For users upgrading from v0.8.2 or earlier, please check the changelog for Garage v0.8.3.

    Click here to get a binary release suited to your platform

    Downloads