aboutsummaryrefslogtreecommitdiff
path: root/src/rpc
Commit message (Collapse)AuthorAgeFilesLines
* Corrected two bugs:Mendes2022-10-062-21/+36
| | | | | - self.node_id_vec was not properly updated when the previous ring was empty - ClusterLayout::merge was not considering changes in the layout parameters
* modifications in several files to :Mendes2022-10-052-48/+73
| | | | | | - have consistent error return types - store the zone redundancy in a Lww - print the error and message in the CLI (TODO: for the server Api, should msg be returned in the body response?)
* Merge remote-tracking branch 'origin/main' into optimal-layoutMendes2022-10-046-209/+375
|\
| * Fix instant substractions that might have panickedfix-timeAlex Auvolat2022-09-291-1/+3
| |
| * Ability to have custom timeouts in request strategy (not used)configurable-timeoutsAlex Auvolat2022-09-201-9/+21
| |
| * RPC performance changesAlex Auvolat2022-09-194-52/+42
| | | | | | | | | | | | - configurable ping timeout - single, much higher, configurable RPC timeout - no more concurrency semaphore
| * Allow for hostnames in bootstrap_peers and rpc_public_addr (fix #353)resolve-peer-namesAlex Auvolat2022-09-142-17/+58
| |
| * Add checks on replication_factor of layouts we use (fix #363, fix #364)various-fixes-for-0.8Alex Auvolat2022-09-131-5/+25
| |
| * Remove/change println! in server code (fix #358)Alex Auvolat2022-09-131-1/+1
| |
| * Use netapp 0.5 published from crates.ioAlex Auvolat2022-09-131-2/+1
| |
| * Merge branch 'lx-perf-improvements' into netapp-stream-bodyAlex Auvolat2022-09-082-9/+7
| |\
| | * Merge branch 'main' into lx-perf-improvementsAlex Auvolat2022-09-082-9/+7
| | |\
| | | * Move GIT_VERSION injection later in build chain to reduce build timesAlex Auvolat2022-09-071-7/+4
| | | |
| | | * Bump versions to 0.8.0 (compatibility is broken already)Alex Auvolat2022-09-061-2/+2
| | | |
| | | * Add feature "system-libs" to enable linking against system librariesJakub Jirutka2022-09-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If this feature is enabled, libsodium-sys and zstd-sys will link dynamically against system-provided libraries instead of building and linking statically the bundled (possibly outdated and vulnerable) copies of them. This feature is intended mainly for linux package maintainers.
| * | | Merge branch 'lx-perf-improvements' into netapp-stream-bodyAlex Auvolat2022-09-061-1/+1
| |\| |
| | * | Update to netapp 0.4.5 - fixed pingAlex Auvolat2022-09-021-1/+1
| | |/
| * | cargo fmtAlex Auvolat2022-09-021-1/+2
| | |
| * | Apply PRIO_SECONDARY to block data transfersAlex Auvolat2022-09-011-1/+1
| | |
| * | Less strict timeoutsAlex Auvolat2022-09-012-4/+4
| | |
| * | Update to Netapp with OrderTag support and exploit OrderTagsAlex Auvolat2022-09-011-1/+1
| | |
| * | Try to fix clippyAlex Auvolat2022-08-291-1/+1
| | |
| * | Merge branch 'lx-perf-improvements' into netapp-stream-bodyAlex Auvolat2022-08-292-6/+2
| |\|
| | * Configure structopt to report the right versionv0.7.2_ci-test-2bug/reported-versionQuentin Dufour2022-08-112-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, structopt reports the value provided by the env var CARGO_PKG_VERSION, feeded by Cargo when reading Cargo.toml. However for Garage we use a versioning based on git, so we often report a version that is behind the real version. In this commit, we create garage_util::version::garage() that reports the right version and configure all structopt subcommands to call this function instead of using the env var.
| * | Factor out node request order selection logic & use in managerAlex Auvolat2022-07-291-39/+56
| | |
| * | Use streaming in block managerAlex Auvolat2022-07-291-10/+14
| | |
| * | update netapp to 0.5Alex Auvolat2022-07-291-1/+1
| | |
| * | First adaptation to WIP netapp with streaming bodyAlex Auvolat2022-07-293-47/+36
| |/
| * Background task manager (#332)Alex2022-07-081-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - [x] New background worker trait - [x] Adapt all current workers to use new API - [x] Command to list currently running workers, and whether they are active, idle, or dead - [x] Error reporting - Optimizations - [x] Merkle updater: several items per iteration - [ ] Use `tokio::task::spawn_blocking` where appropriate so that CPU-intensive tasks don't block other things going on - scrub: - [x] have only one worker with a channel to start/pause/cancel - [x] automatic scrub - [x] ability to view and change tranquility from CLI - [x] persistence of a few info - [ ] Testing Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/332 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
| * First version of admin API (#298)Alex2022-05-243-49/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Spec:** - [x] Start writing - [x] Specify all layout endpoints - [x] Specify all endpoints for operations on keys - [x] Specify all endpoints for operations on key/bucket permissions - [x] Specify all endpoints for operations on buckets - [x] Specify all endpoints for operations on bucket aliases View rendered spec at <https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/admin-api/doc/drafts/admin-api.md> **Code:** - [x] Refactor code for admin api to use common api code that was created for K2V **General endpoints:** - [x] Metrics - [x] GetClusterStatus - [x] ConnectClusterNodes - [x] GetClusterLayout - [x] UpdateClusterLayout - [x] ApplyClusterLayout - [x] RevertClusterLayout **Key-related endpoints:** - [x] ListKeys - [x] CreateKey - [x] ImportKey - [x] GetKeyInfo - [x] UpdateKey - [x] DeleteKey **Bucket-related endpoints:** - [x] ListBuckets - [x] CreateBucket - [x] GetBucketInfo - [x] DeleteBucket - [x] PutBucketWebsite - [x] DeleteBucketWebsite **Operations on key/bucket permissions:** - [x] BucketAllowKey - [x] BucketDenyKey **Operations on bucket aliases:** - [x] GlobalAliasBucket - [x] GlobalUnaliasBucket - [x] LocalAliasBucket - [x] LocalUnaliasBucket **And also:** - [x] Separate error type for the admin API (this PR includes a quite big refactoring of error handling) - [x] Add management of website access - [ ] Check that nothing is missing wrt what can be done using the CLI - [ ] Improve formatting of the spec - [x] Make sure everyone is cool with the API design Fix #231 Fix #295 Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/298 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
| * First implementation of K2V (#293)Alex2022-05-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Specification:** View spec at [this URL](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/k2v/doc/drafts/k2v-spec.md) - [x] Specify the structure of K2V triples - [x] Specify the DVVS format used for causality detection - [x] Specify the K2V index (just a counter of number of values per partition key) - [x] Specify single-item endpoints: ReadItem, InsertItem, DeleteItem - [x] Specify index endpoint: ReadIndex - [x] Specify multi-item endpoints: InsertBatch, ReadBatch, DeleteBatch - [x] Move to JSON objects instead of tuples - [x] Specify endpoints for polling for updates on single values (PollItem) **Implementation:** - [x] Table for K2V items, causal contexts - [x] Indexing mechanism and table for K2V index - [x] Make API handlers a bit more generic - [x] K2V API endpoint - [x] K2V API router - [x] ReadItem - [x] InsertItem - [x] DeleteItem - [x] PollItem - [x] ReadIndex - [x] InsertBatch - [x] ReadBatch - [x] DeleteBatch **Testing:** - [x] Just a simple Python script that does some requests to check visually that things are going right (does not contain parsing of results or assertions on returned values) - [x] Actual tests: - [x] Adapt testing framework - [x] Simple test with InsertItem + ReadItem - [x] Test with several Insert/Read/DeleteItem + ReadIndex - [x] Test all combinations of return formats for ReadItem - [x] Test with ReadBatch, InsertBatch, DeleteBatch - [x] Test with PollItem - [x] Test error codes - [ ] Fix most broken stuff - [x] test PollItem broken randomly - [x] when invalid causality tokens are given, errors should be 4xx not 5xx **Improvements:** - [x] Descending range queries - [x] Specify - [x] Implement - [x] Add test - [x] Batch updates to index counter - [x] Put K2V behind `k2v` feature flag Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/293 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
| * Update netapp to 0.4.4, fix #300v0.7.1netapp-0.4.4Alex Auvolat2022-05-091-1/+1
| |
* | deleted zone_redundancy from System structMendes2022-10-041-2/+0
| |
* | Correction of a few bugs in the tests, modification of ClusterLayout::checkMendes2022-09-222-77/+137
| |
* | New version of the algorithm that calculate the layout.Mendes2022-09-215-325/+918
| | | | | | | | | | | | | | | | 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
* | Correct small formatting issueAlex Auvolat2022-05-051-3/+1
| |
* | Corrected the warnings and errors issued by cargo clippyMendes2022-05-011-15/+11
| |
* | Apply cargo fmtAlex Auvolat2022-05-011-444/+496
| |
* | Change the way new layout assignations are computed.Alex Auvolat2022-05-012-434/+448
|/ | | | | | The function now computes an optimal assignation (with respect to partition size) that minimizes the distance to the former assignation, using flow algorithms. This commit was written by Mendes Oulamara <mendes.oulamara@pm.me>
* Update to netapp 0.4.2 (a tiny fix)Alex Auvolat2022-04-071-1/+1
|
* Add feature flag for Kubernetes discoveryAlex Auvolat2022-03-244-73/+108
|
* Make layout optimization work in relative termsbug/layoutAlex Auvolat2022-03-241-9/+14
|
* Slight change and add comment to layout assignation algoAlex Auvolat2022-03-241-37/+33
|
* Small change to partition assignation algorithmAlex Auvolat2022-03-241-0/+28
| | | | | | This change helps ensure that nodes for each partition are spread over all datacenters, a property that wasn't ensured previously when going from a 2 DC deployment to a 3 DC deployment
* Update netapp to v0.4.1update-netappAlex Auvolat2022-03-151-1/+1
|
* Fix some new clippy lintsfix-resyncAlex Auvolat2022-03-143-10/+5
|
* Add wrapper over sled tree to count items (used for big queues)Alex Auvolat2022-03-141-1/+6
|
* Bump version to 0.7 because of incompatible NetappAlex Auvolat2022-03-142-4/+4
|
* Add spans to table calls, change span names in RPCAlex Auvolat2022-03-141-1/+15
|
* add missing netapp telemetry featureAlex Auvolat2022-03-141-1/+1
|