Commit Graph

52 Commits

Author SHA1 Message Date
rmoff a7d6620e18 Fix typo in error message 2026-01-24 12:21:45 +01:00
Alex Auvolat 6cf6db5c61 fix panic when cluster_layout cannot be saved (fix #1150) 2025-09-13 17:49:25 +02:00
Alex 1cb0ae10a8 Merge pull request 'fix crash in layout computation when changing all nodes of a zone to gateway mode' (#937) from baptiste/garage:fix_layout_crash into main
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/937
Reviewed-by: Alex <lx@deuxfleurs.fr>
2025-02-19 17:09:10 +00:00
Alex Auvolat d0104b9f9b block manager: write blocks only to currently active layout version (fix #815)
avoid wastefully writing blocks to nodes that will discard them as soon
as the layout migration is finished
2025-02-14 16:45:55 +01:00
Baptiste Jonglez 6d798c640f WIP: fix crash in layout computation when changing all nodes of a zone to gateway mode
This change is probably not a proper fix, somebody with more expertise on
this code should look at it.

Here is how to reproduce the crash:

- start with a layout with two zones
- move all nodes of a zone to gateway mode: `garage layout assign fea54bcc081f318 -g`
- `garage layout show` will panic with a backtrace

Fortunately, the crash is only on the RPC client side, not on the Garage
server itself, and `garage layout revert` still works to go back to the
previous state.

As far as I can tell, this bug is present since Garage 0.9.0 which
includes the new layout assignation algorithm:

  https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/296
2025-01-27 19:33:57 +01:00
Stefan Majer 2eb9fcae20 Fix all typos 2025-01-16 13:22:00 +01:00
Alex Auvolat 34453bc9c2 fix logic in garage layout skip-dead-nodes + fix typo (fix #879) 2024-09-22 13:47:27 +02:00
Alex Auvolat 7fb66b4944 layout: discard old info when it is completely out-of-date (fix #841) 2024-08-24 12:38:56 +02:00
Alex Auvolat 4eba32f29f [next-0.10] layout helper: rename & clarify updates to update trackers 2024-03-27 13:47:06 +01:00
Alex Auvolat 32f1786f9f [next-0.10] cache layout check result 2024-03-27 13:37:20 +01:00
Alex Auvolat 01a0bd5410 [next-0.10] remove impl Deref for LayoutHelper 2024-03-27 13:32:13 +01:00
Alex Auvolat c0eeb0b0f3 [next-0.10] fixes to k2v rpc + comment fixes 2024-03-27 10:44:03 +01:00
Yureka c1769bbe69 ReplicationMode -> ConsistencyMode+ReplicationFactor 2024-03-07 12:45:33 +01:00
Alex Auvolat eb4a6ce106 Merge branch 'main' into next-0.10 2024-02-15 14:06:34 +01:00
Alex Auvolat 0041b013a4 layout: refactoring and fix in layout helper 2023-12-11 16:09:22 +01:00
Alex Auvolat adccce1145 layout: refactor/fix bad while loop 2023-12-11 15:45:14 +01:00
Alex Auvolat 85b5a6bcd1 fix some clippy lints 2023-12-11 15:31:47 +01:00
Alex Auvolat 4dbf254512 layout: refactoring, merge two files 2023-12-08 14:15:52 +01:00
Alex Auvolat 5dd200c015 layout: move block_read_nodes_of to rpc_helper to avoid double-locking
(in theory, this could have caused a deadlock)
2023-12-08 12:02:24 +01:00
Alex Auvolat 063294dd56 layout version: refactor get_node_zone 2023-12-08 11:50:58 +01:00
Alex Auvolat 9cecea64d4 layout: allow sync update tracker to progress with only quorums 2023-12-07 14:51:20 +01:00
Alex Auvolat d90de365b3 table sync: use write quorums to report global success or failure of sync 2023-12-07 11:16:10 +01:00
Alex Auvolat 95eb13eb08 rpc: refactor result tracking for quorum sets 2023-12-07 10:57:21 +01:00
Alex Auvolat c8356a91d9 layout updates: fix the set of nodes among which minima are calculated 2023-12-07 10:30:26 +01:00
Alex Auvolat 11e6fef93c cli: add layout history and layout assume-sync commands 2023-11-27 16:22:25 +01:00
Alex Auvolat d6d239fc79 block manager: read_block using old layout versions if necessary 2023-11-27 11:52:57 +01:00
Alex Auvolat 707442f5de layout: refactor digests and add "!=" assertions before epidemic bcast 2023-11-16 13:51:40 +01:00
Alex Auvolat ad5c6f779f layout: split helper in separate file; more precise difference tracking 2023-11-16 13:26:43 +01:00
Alex Auvolat d4df03424f layout: fix test 2023-11-15 15:56:57 +01:00
Alex Auvolat 33c8a489b0 layou: implement ack locking 2023-11-15 15:40:44 +01:00
Alex Auvolat 393c4d4515 layout: add helper for cached/external values to centralize recomputation 2023-11-15 14:20:50 +01:00
Alex Auvolat 65066c7064 layout: wip cache global mins 2023-11-15 13:28:30 +01:00
Alex Auvolat b3e729f4b8 layout history merge: rm invalid versions when valid versions are added 2023-11-15 12:15:58 +01:00
Alex Auvolat 7ef2c23120 layout: fix test 2023-11-14 15:45:01 +01:00
Alex Auvolat 3b361d2959 layout: prepare for write sets 2023-11-14 14:28:16 +01:00
Alex Auvolat 83a11374ca layout: fixes in schema 2023-11-14 13:29:26 +01:00
Alex Auvolat 1aab1f4e68 layout: refactoring of all_nodes 2023-11-14 13:12:32 +01:00
Alex Auvolat 8e292e06b3 layout: some refactoring of nongateway nodes 2023-11-14 12:48:38 +01:00
Alex Auvolat 9a491fa137 layout: fix test 2023-11-11 13:10:59 +01:00
Alex Auvolat df24bb806d layout/sync: fix bugs and add tracing 2023-11-11 12:44:27 +01:00
Alex Auvolat ce89d1ddab table sync: adapt to new layout history 2023-11-11 12:08:32 +01:00
Alex Auvolat df36cf3099 layout: add helpers to LayoutHistory and prepare integration with Table 2023-11-09 16:32:31 +01:00
Alex Auvolat 9d95f6f704 layout: fix tracker bugs 2023-11-09 15:52:45 +01:00
Alex Auvolat bad7cc812e layout admin: add missing calls to update_hash 2023-11-09 15:42:10 +01:00
Alex Auvolat 03ebf18830 layout: begin managing the update tracker values 2023-11-09 15:31:59 +01:00
Alex Auvolat 94caf9c0c1 layout: separate code path for synchronizing update trackers only 2023-11-09 14:53:34 +01:00
Alex Auvolat bfb1845fdc layout: refactor to use a RwLock on LayoutHistory 2023-11-09 14:12:05 +01:00
Alex Auvolat 19ef1ec8e7 layout: more refactoring 2023-11-09 13:34:14 +01:00
Alex Auvolat 8a2b1dd422 wip: split out layout management from System into separate LayoutManager 2023-11-09 12:55:36 +01:00
Alex Auvolat 523d2ecb95 layout: use separate CRDT for staged layout changes 2023-11-09 11:19:43 +01:00