Commit Graph

24 Commits

Author SHA1 Message Date
Mendes 7f3249a237 New version of the algorithm that calculate the layout.
It takes as paramters the replication factor and the zone redundancy, computes the
largest partition size reachable with these constraints, and among the possible
assignation with this partition size, it computes the one that moves the least number
of partitions compared to the previous assignation.
This computation uses graph algorithms defined in graph_algo.rs
2022-09-21 14:39:59 +02:00
Alex c94406f428
Improve how node roles are assigned in Garage
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/tag Build is passing Details
continuous-integration/drone/push Build is passing Details
continuous-integration/drone Build is passing Details
- change the terminology: the network configuration becomes the role
  table, the configuration of a nodes becomes a node's role
- the modification of the role table takes place in two steps: first,
  changes are staged in a CRDT data structure. Then, once the user is
  happy with the changes, they can commit them all at once (or revert
  them).
- update documentation
- fix tests
- implement smarter partition assignation algorithm

This patch breaks the format of the network configuration: when
migrating, the cluster will be in a state where no roles are assigned.
All roles must be re-assigned and commited at once. This migration
should not pose an issue.
2021-11-16 16:05:53 +01:00
Alex 1b450c4b49
Improvements to CLI and various fixes for netapp version
Discovery via consul, persist peer list to file
2021-10-22 16:55:24 +02:00
Alex 4067797d01
First port of Garage to Netapp 2021-10-22 15:55:18 +02:00
Alex b9127dd6f8
Prepare for v0.3.0 and add migration path from v0.2.1.x
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build was killed Details
2021-05-28 15:29:58 +02:00
Alex ddb2b29bfd
Rename datacenters into zones (doc not yet updated) 2021-05-28 14:07:36 +02:00
Alex b490ebc7f6
Many improvements on ring/replication and its configuration:
- Explicit "replication_mode" configuration parameters that takes
  either "none", "2" or "3" as values, instead of letting user configure
  replication factor themselves. These are presets whose corresponding
  replication/quorum values can be found in replication/mode.rs

- Explicit support for single-node and two-node deployments
  (number of nodes must be at least "replication_mode", with "none"
  we can have only one node)

- Ring is now stored much more compactly with 256*8 + n*32 bytes,
  instead of 256*32 bytes

- Support for gateway-only nodes that do not store data
  (these nodes still need a metadata_directory to store the list
  of bucket and keys since those are stored on all nodes; it also
  technically needs a data_directory to start but it will stay
  empty unless we have bugs)
2021-05-28 14:07:36 +02:00
Trinity Pointard e4b9e4e24d
rename types to CamelCase
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2021-05-03 22:15:09 +02:00
Trinity Pointard f05bb111c2
fix clippy warnings on util and rpc 2021-05-03 22:11:41 +02:00
Trinity Pointard 2812a027ea
change some more comments and revert changes on TableSchema
continuous-integration/drone/push Build is passing Details
2021-04-27 16:49:07 +02:00
Trinity Pointard 74373aebcf
make most requested changes 2021-04-27 16:47:08 +02:00
Trinity Pointard 8e0524ae15
document rpc crate 2021-04-27 16:37:10 +02:00
Alex f4346cc5f4 Update dependencies
continuous-integration/drone/push Build is passing Details
2021-03-16 15:58:40 +01:00
Alex 2a41b82384 Simpler Merkle & sync
continuous-integration/drone/push Build is passing Details
2021-03-16 12:18:03 +01:00
Alex 1d9961e411 Simplify replication logic
continuous-integration/drone/push Build is passing Details
2021-03-16 11:14:27 +01:00
Alex 6a8439fd13 Some improvements in background worker but we terminate late
continuous-integration/drone/push Build is passing Details
2021-03-15 23:14:12 +01:00
Alex 046b649bcc (not well tested) use merkle tree for sync
continuous-integration/drone/push Build is passing Details
2021-03-11 18:28:27 +01:00
Alex 3214dd52dd Very minor changes
continuous-integration/drone/push Build is passing Details
2021-03-10 21:50:09 +01:00
Alex 6a3dcf3974 Rename n_tokens into capacity
continuous-integration/drone/push Build is passing Details
2021-03-10 14:52:03 +01:00
Alex 7cda917b6b update condition
continuous-integration/drone/push Build is passing Details
2021-03-05 17:08:03 +01:00
Alex d7e005251d Not fully tested: new multi-dc MagLev
continuous-integration/drone/push Build is passing Details
2021-03-05 16:22:29 +01:00
Alex 40763fd749 Cargo fmt 2021-02-23 18:46:25 +01:00
Alex b1b640ae8b rename hash() to sha256sum(), we might want to change it at some places
continuous-integration/drone/push Build is passing Details
2021-02-21 15:24:30 +01:00
Alex 80892df8cc Some refactoring
continuous-integration/drone/push Build is passing Details
2021-02-21 13:11:10 +01:00