• v0.9.0 952c9570c4

    Garage v0.9.0 Stable

    lx released this 2023-10-10 13:21:45 +00:00 | 429 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 | 629 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
  • v0.8.3 32e5686ad8

    lx released this 2023-08-29 08:56:12 +00:00 | 631 commits to main since this release

    ⚠️ We discovered that a netapp dependency upgrade caused an incompatible version of rmp-serde to be used (v1.1 vs v0.15) in this release, in turn causing v0.8.2 and v0.8.3 nodes to be unable to communicate together in a cluster. The 0.8.4 release fixes this issue. All users should upgrade to 0.8.4 as soon as possible.

    This minor release includes the following improvements and fixes:

    Potentially breaking change:

    • #567 changes how Garage nodes are advertised in Consul: the node ID is no longer advertised in the Consul Node metadata but in the Consul Service metadata. Migration has not been tested throughly, old data should be replaced automatically, but if it isn't, Consul discovery might be broken until old entries are purged manually.

    New features:

    • Scrub now emits a log message when it starts/ends (#551)

    • Interaction with Consul can now use the agent API (#567)

    • Support {s3,web}.root_domain for the Caddy on-demand TLS endpoint (#610)

    • Web endpoint: support index on path missing a trailing slash (#612)

    Bug fixes:

    • block/manager.rs: Prioritize raw blocks when no compression configured (#566)

    • Properly implement double-urlencoding for S3 signatures in K2V (#574)

    • Fix timestamp issues in garage block list-errors (#584, #585)

    Internals/refactoring:

    • Build fixes and improvements (#562, #563, #568, #572, #599, #592)

    • Code quality improvements (#570, #581, #586, #607)

    • k2v-client refactoring (#571)

    • Port k2v-client to aws-sigv4 and add basic integration testing (#577)

    • New return type for PollRange in k2v-client (#590)

    Other:

    Thanks to all of the contributors that have participated in this release: arthurlutz, Florian Klink, Jakub Jirutka, Jonatan Steuernagel, Jonathan Davies, Kamil Banach, Max Justus Spransy, Quentin Dufour, Roberto Hidalgo, trinity-1686a, yuka.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.2 000006d689

    Garage v0.8.2 Stable

    lx released this 2023-03-13 17:50:07 +00:00 | 769 commits to main since this release

    This minor release includes the following improvements and fixes:

    CLI improvements:

    • report available disk usage (#479, #487)
    • improve garage worker set and implement garage worker get (#464)
    • clearer LMDB error message (#517, #519)

    New features:

    • secrets can be configured using separate files and environment varialbes (#466, #499)
    • K2V PollRange (#471)
    • added system metrics (#472, #524)
    • /check web endpoint for domain verification by Caddy (#474, #491, #505)
    • log X-Forwarded-For header when available (#500, #504)

    Bug fixes:

    • PutObject: better cleanup when interrupted in the middle, to avoid accumulation of useless .tmp files (#462)
    • scrub now has an interval of 25 + 10 random days to avoid scrubbing all nodes at once (#516, #523)
    • fix duplicated content-type in error document (#493)
    • fix an error message (#497)
    • fix testing framework (#526, #528)

    Internals / refactorings:

    • unified queue for asynchronous table updates (#451)
    • refactoring/simplification of background workers (#451, #463)
    • refactoring of encoding/decoding functions and data migration code (#461)
    • updated Cargo dependencies (#484, #494, #514)

    Other:

    Thanks to all of the contributors that have participated in this release: Baptiste Jonglez, Felix Scheiniost, Jonathan Davies, kaiyou, Maximilien Richer, Mike Coleman, Patrick Jahns, Quentin Dufour, teutat3s, wilson

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.1 76230f2028

    Garage v0.8.1 Stable

    lx released this 2023-01-02 13:57:47 +00:00 | 964 commits to main since this release

    This minor release includes a few improvements and fixes:

    • New /health and /v0/health admin API endpoints to check node health (#440)

    • Various CLI improvements, including new debug options for lost blocks (#448)

    • Refactoring of the Helm chart (#422, #446)

    • Properly enforce allow_create_bucket permission flag (#445, #447)

    • Fix crash on garage layout apply (#414, #429)

    • Fix router keyword handling with non-empty value (#442, #446)

    • Fix logs appearing twice (#435)

    • Make Git repository into a Nix flake (#424)

    • Many documentation updates

    Thanks to all of the contributors that have participated in this release: felix.scheinost, kaiyou, Maximilien R, Patrick Jahns, tompearson.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.8.0 1e40c93fd0

    Garage v0.8.0 Stable

    lx released this 2022-11-21 13:56:12 +00:00 | 1010 commits to main since this release

    This release is the final version of Garage v0.8.0. Most changes have already been listed in the release notes of v0.8.0 RC1 and RC2. Here are the main highlights of v0.8.0 compared to v0.7.3:

    • LMDB is now officially supported as an alternative database engine to replace Sled

    • Bucket size monitoring and quotas

    • Many improvements to background maintenance tasks, including scheduled automatic scrub of the data store

    • Significant performance improvements

    • Our experimental K2V API is included in release builds (though not activated if you haven't configured it)

    The following has changed since RC2:

    • Many documentation updates

    • OpenAPI specification of the Admin API (see https://garagehq.deuxfleurs.fr/api/garage-admin-v0.html for a rendered version)

    • Show a backtrace and a nice message when Garage panics

    • Added an experimental garage bucket cleanup-unfinished-uploads command to help remove unfinished multipart uploads when they take too much space.

    There is one known bug for this release:

    • #414: Panic during application of new cluster layout in 0.8.0-rc1. Please comment on the issue if you also had it, so that we know this is not an isolated case.

    Thanks to all of the contributors that have participated in this new version since v0.7.3: Alex, chemicstry, Jakub Jirutka, Maximilien, Quentin, Simon C, Tobias Krischer, Zorun.

    **Click here to get a binary release suited to your platform

    Downloads
  • v0.8.0-rc2 5254750658

    Garage v0.8.0 RC2 Pre-Release

    lx released this 2022-11-05 11:40:57 +00:00 | 1046 commits to main since this release

    This release is the second Release Candidate for Garage 0.8.0. Improvements in this version are the following:

    • Shutdown properly on SIGTERM/SIGHUP and on Windows signals (#396)

    • Fix time calculations that made Garage panic in extreme scenarios (#398, thanks to Zorun for the intensive testing)

    • Add Helm chart for running Garage inside of Kubernetes (#331, thanks chemicstry and Maximilien)

    • Upgraded build toolchain with Rust >= 1.63.0 (#400)

    • Admin API and K2V API: return HTTP 204 No Content when appropriate (#376, #403, thanks Tobias Krischer for the contribution)

    • Add support for talking to Consul through HTTPS (#405)

    • Many documentation updates

    Thanks to all of the contributors for this release: Alex, chemicstry, Maximilien, Tobias Krischer, Zorun.

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

    Downloads
  • v0.8.0-rc1 2197753dfd

    Garage v0.8.0 RC1 Pre-Release

    lx released this 2022-09-27 09:56:58 +00:00 | 1085 commits to main since this release

    This release is the first Release Candidate for Garage 0.8. Improvements in this version are the following:

    • Ability to replace sled with lmdb or sqlite for the metadata storage (#284, #322)

    • K2V now included in official release builds, still as a technical
      preview (the API is unstable and might be subject to changes) (#302)

    • Bucket quotas (#71, #326)

    • Update to Netapp 0.5 with streaming body; stream data blocks to client
      as they are received (#343)

    • Improved monitoring of background tasks (#207, #332)

    • Scrub is scheduled automatically, can be paused/resumed/made faster or
      slower at runtime (#207, #255, #332)

    • Background block resync can be made faster or slower at runtime (#369)

    • Many computationally-intensive tasks have been moved to dedicated
      tokio threads for blocking tasks (#342)

    • Reduce lock contention in block manager (#342)

    • Less sensitive timeouts for RPC operations, avoiding nodes
      deconnecting or requests timing out on slow connections (#387)

    • Cleaner and better optimized handling of byte chunks with the bytes
      crate (#342, #343)

    • Many improvements in build system; cargo features for everything (#370, #372, #373)

    • HTTP servers (S3 API, K2V API, Admin API) are no longer mandatory: by
      removing the corresponding config section, they are simply not started (#354, #373)

    • pretty_env_logger is replaced by tracing_subscriber::fmt

    • Various API fixes (#227, #384, #389)

    • Fix the build version reported by the CLI (#328, #350, #352)

    • Fixed builds for non-amd64 platforms (#344, #345)

    • Provide multi-arch Docker containers (#375, #393)

    • Avoid using/propagating broken cluster layouts (#363, #364, #380)

    • Allow for hostnames in bootstrap_peers and rpc_public_addr (#353, #383)

    • Some documentation updates (not finished yet)

    Thanks to all of the contributors for this release: Alex, Quentin, Jakub Jirutka, Simon C.

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

    Downloads
  • v0.7.3 e8a52192d0

    Garage v0.7.3 Stable

    lx released this 2022-08-30 09:10:36 +00:00 | 0 commits to dev0.7.3 since this release

    This minor release includes a small number of fixes:

    • The correct Garage version is now reported by garage --version
    • ARM and ARM64 builds now work
    • The Content-Type header is now set correctly in all JSON responses in the Admin and K2V API endpoints

    Warning. v0.7.3 is (unexpectedly) incompatible with v0.7.1. Make sure to update your entire cluster at once.

    Click here to get a binary release suited to your platform

    Downloads
  • v0.7.2 b2a2d3859f

    Garage v0.7.2 Stable

    lx released this 2022-08-29 15:53:01 +00:00 | 1242 commits to main since this release

    This release introduces a more complete API for administrative operations (#298), building upon the API endpoint that was introduced previously for exposing Prometheus metrics. Now, almost all operations accessible from the CLI (cluster layout management, bucket and access key management, ...) are also accessible using a REST API. Note that at this stage, there is no committement to the stability of these API endpoints. Documentation of these APIs in their current form can be found here.

    This release also contains code for a first iteration of the K2V storage service, which we designed to complement S3 for the storage of small values (#293). K2V is currently disabled at compile-time by default and is not distributed in the published binaries, as its API is still experimental and subject to changes. Special builds featuring K2V can be found in our "extra builds" section on the Download page, and can also be produced by activating the k2v Cargo feature flag. Specification of the K2V API in its current form can be found here.

    Click here to get a binary release suited to your platform

    Downloads