------------------------------------------------------------------- Mon Jan 26 06:43:43 UTC 2026 - Johannes Kastl - update to 2.2.0: This release is a stable release. There are no breaking changes when migrating from Garage v2.1.0. * Bug fixes: - properly handle precondition time equal to object timestamp (#1193) - don't enforce x-amz-content-sha256 to be in signed headers (#770, #1195) - don't append index document to redirect urls (#1223) - openapi: work around issue in binding generator (#1249, #1278) - fix typo in error message (#1283) - fix presigned post when bucket is absent from fields (#1290) - fix SIGILL on raspberry pi and older ARM boards (#1217) * Features: - add block_max_concurrent_writes_per_request configuration parameter (#1251) - add consul discovery for WAN-federated consul servers (#1252) * Toolchain & dependencies: - update toolchain (#1233, #1296) - update cargo dependencies (#1217, #1295) - replace err-derive by thiserror (#1218, #1219) - set optimization level to 3 in release builds (#1235) * Ecosystem: - helm chart updates (#1190, #1225, #1184, #1264, #1271, #1242, #1238) - documentation updates (#1169, #1211, #1204, #1258, #1259, #1263, #1256, #1270, #1269, #1272, #826, #1281, #1268, #1284, #1286, #1294) - publish slides for talk at JoSy 2025 (#1191) ------------------------------------------------------------------- Mon Dec 15 13:05:57 UTC 2025 - Andreas Schwab - Use protoc from protobuf-devel package, intead of bundled binaries of questionable provenance ------------------------------------------------------------------- Fri Dec 5 00:04:30 UTC 2025 - Marcus Rueckert - Switch to use system libraries and add the required buildrequires - Enable additional features: consul-discovery,kubernetes-discovery,telemetry-otlp ------------------------------------------------------------------- Thu Dec 4 23:33:36 UTC 2025 - Marcus Rueckert - Add make-the-default-path-match-our-package.patch now the default config for binary is /etc/garage/garage.toml ------------------------------------------------------------------- Thu Sep 18 23:43:00 UTC 2025 - Marcus Rueckert - update to 2.1.0: A single breaking change was included in the admin API, due to a constraint of the Go SDK generator: storage_nodes_ok is renamed to storage_nodes_up in GetClusterHealthResponse, to fix generated SDK code (#1111) There are no other breaking changes when migrating from Garage v2.0.0. - Features: - api: add introspect endpoint (#1091, #1092) - log access keys used in HTTP requests (#1061, #1124) - helm chart: add commonLabel to all resources and pod templates (#1135) - Bug fixes: - fix panic in garage status (#1131, #1145) - fix server panic caused by garage json-api Metrics (#1132, #1144) - fix openapi spec (#1071, #1081, #1082, #1139, #1160, #1162) - hide keys without any permissions from admin api (#1123) - add error case for layout not ready, and fail earlier in many places (#1107, #1159) - take consistency_mode (degraded/dangerous) into account in fullcopy tables (#1143) - fix GetBucketCORS return code if there are no policies (#1096) - fix AbortMultipartUpload return code (#1095) - fix checksums with empty strings (#1116) - telemetry: remove broken panel override in grafana dashboard (#1075) - Changes: - doc improvements (#1070, #1072, #1074, #1085, #1098, #1101, #1117) - flake: add dev script dependencies to devShellFull (#1134) - woodpecker CI: require the nix=enabled label on workers (#1153) Changes included from the v1.3.0 release - Features: - add garage repair clear-resync-queue (#1151, #1165) - add experimental support for Fjall db engine (#906) - log access keys used in HTTP requests (#1122, #1061) - Bug fixes: - block manager: limit simultaneous block reads from disk (#1157) - garage_db: fix some unsoundness in lmdb adapter unsafe (#1099) - handle ECONNABORTED (#1120) - don't die on SIGHUP (#1121) - fix panic when cluster_layout cannot be saved (#1150, #1158) - garage_db: fix error handling logic (#1138, #1163) - Other: - garage_db: update rusqlite and snapshot using VACUUM INTO (#1129, #1146, #1164) - garage_db: refactoring (#1141, #1142) - woodpecker CI: require the nix=enabled label on workers (#1152) - doc improvements (#1117, #1118, #1119) ------------------------------------------------------------------- Sun Jun 15 06:16:08 UTC 2025 - Johannes Kastl - update to 2.0.0: This release contains the following breaking changes since the v1.x series: * The administration API has been completely reworked. Some calls to the /v1/ endpoints will still work but most will not. New endpoints are prefixed by /v2/. * replication_mode is no longer a supported configuration parameter, please use replication_factor and consistency_mode instead. Changes since v1.2.0: * Complete refactoring of the admin API (#939, #943, #945, #978, #980, #983, #1004) * Generate admin API spec programatically using utoipa (#979) * New garage json-api command to call the JSON API from scripts * Support multiple admin API tokens (#944, #982) * CLI rework (#984) * Implement command to inspect objects in buckets (#892, #1005) * Implement expiration dates for access keys (#996, #1010) * Use read/write quorums on admin operations to ensure read-after-write (#147, #995, #997) * Support redirections on S3 web endpoint (#665, #910) * SSE-C: use per-object encryption key internally (#848, #990) * Add CRC64NVME checksumming algorithm (#963, #991) * Support x-amz-checksum-type and add tests with latest awscli/boto3 (#1017, #1025) * Throw error on legacy replication_mode setting (#1018) * Refactoring of TableShardedReplication (#820) Changes since v2.0.0-rc1: * Add support for logging to journald (#1056) * Basic default web page for errors on web endpoint (#1064) * Implement basic GetBucketAcl stub (#1045) * Emit internal error when race condition is detected in GetObject (#1050, #1053) * Speed up UploadPartCopy (#1047) * Reduce log level of table sync messages * Mark block refs as deleted in garage block purge (#1055, #1067) ------------------------------------------------------------------- Sat Jun 14 08:53:22 UTC 2025 - Johannes Kastl - update to 1.2.0: * Features: - optional support for punycode in bucket names (#273, #1042) - metadata: create compact lmdb snapshots (#1006, #1008) - implement repair procedure to fix inconsistent bucket aliases + better resilience to inconsistent states (#989) - implement basic GetBucketAcl stub (#1045) - add support for logging to journald (#1056) - basic default web page for errors on web endpoint (#1064) * Bug fixes: - fix behavior of CopyObject wrt x-amz-website-redirect-location (#1037) - correctly return 404 on missing lifecycle config (#1043) - speed up UploadPartCopy (#1047) - emit internal error when race condition is detected in GetObject (#1050, #1053) - mark block refs as deleted in garage block purge (#1055, #1067) * Ecosystem: - update cargo dependencies (#992) - documentation updates (#974, #981, #987, #1007, #1012, #1015, #1023, #1046, #1051, #1057) - helm chart: fix headless service (#976) - add kubernetes CRD (#994) ------------------------------------------------------------------- Wed Mar 5 13:17:02 UTC 2025 - Johannes Kastl - update to 1.1.0: * Bug fixes - Fix free space calculation on FreeBSD (#907, #917) - Use a subdirectory for sqlite snapshots (#932) - Better handling of errors for more precise error codes (#942) - Fix internal function table::insert_many failing with zero items (#915, #946) - Fix error reporting in garage meta snapshot command (#920, #930) - Return stats from all nodes in garage stats -a including those not in the layout (#814, #953) - Block manager: avoid writing blocks to draining nodes (#815, #956) - Avoid deadlock in block rebalance worker (#845, #957) - Fix crash in layout computation (#937) * S3 compatibility - Add support for STREAMING-*-PAYLOAD-TRAILER (#824, #960) - Implement x-amz-website-redirect-location header (#966) - Implement if-match and if-unmodified-since in GetObject/HeadObject (#804, #967) - Parse x-id query parameter and report any inconsistency (#822, #954) - Return a location value in CompleteMultipartUpload (#852, #958) - Make x-amz-meta-* headers lowercase (#844, #938) * New features - Add bucket domain to metrics (#608) - Add metadata_snapshots_dir configuration flag (#926, #933) - Add use_local_tz configuration flag for lifecycle worker (#908) * Other - Documentation updates (#887, #888, #901, #921, #927, #941) - Split build of garage_api in 4 smaller crates (#947) - Remove some uses of async_trait (#952) - Fix compilation warnings (#959) - Replace cargo2nix by crane (#950) - Update toolchain and dependencies (#918, #924, #931, #951) - Build and CI improvements (#912, #935, #936, #949) - Improvements to Helm chart (#896, #923) - Fix typos (#898, #928) * Changes included after 1.1.0~rc1: - admin api definition: fix globalAlias query parameter name (#971, #973) - kubernetes helm chart: add headless service for statefulSet serviceName (#969, #970) ------------------------------------------------------------------- Thu Nov 21 10:27:16 UTC 2024 - Guillaume GARDET - Add _constraints to avoid OOM failures ------------------------------------------------------------------- Fri Sep 27 21:10:47 UTC 2024 - Johannes Kastl - update to 1.0.1: * Features: - Add rpc_public_addr_subnet configuration option (#817) - Improve LMDB performance (#855) - Improve metadata performance (#873, #877) * Bug fixes: - Discard old layout info when it is completely out-of-date, fixes introducing new nodes in an old cluster (#841, #861) - PostObject: don't modify request before validating policy (#850) - Fix logic in garage layout skip-dead-nodes (#879, #880) - Kill opened connections after SIGINT after 10s deadline (#806, #864) * Other: - Update the time dependency to fix builds using Rust 1.80 (#849, #865) - Fix build when lmdb feature is disabled (#800, #863) - Improvements to Nix tooling (#816) - Improvements to Helm chart (#823, #843) - Toolchain updates (#866) - Documentation fixes (#799, #802, #831, #875, #803, #862) - CLI help and error message improvements (#813, #846) ------------------------------------------------------------------- Mon Jun 24 07:39:02 UTC 2024 - Johannes Kastl - new package garage: S3-compatible object store for small self-hosted geo-distributed deployments