aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* First implementation of K2V (#293)Alex2022-05-1078-1141/+5520
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **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
|
* Fix `layout show` to not show changes when there are no changes (#297)Alex2022-05-092-5/+22
| | | | | | | | | fixes #295, partially Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/297 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
* fix clippyfix-multipart-fragmentationAlex Auvolat2022-04-191-1/+1
|
* Prettier code for defragmentationAlex Auvolat2022-04-191-104/+102
|
* Defragmentation in UploadPartCopy: first pass (not pretty but it compiles)Alex Auvolat2022-04-191-63/+122
|
* remove size limitation in UploadPartCopy (#280)withinboredom2022-04-191-12/+0
| | | | | | | | | | | This removes the >1mb s3_copy restriction. This restriction doesn't seem to be documented anywhere (I could be wrong). It also causes some software to fail (such as #248). Co-authored-by: Rob Landers <landers.robert@gmail.com> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/280 Co-authored-by: withinboredom <landers.robert@gmail.com> Co-committed-by: withinboredom <landers.robert@gmail.com>
* Add missing opentelemetry featuresAlex Auvolat2022-04-081-1/+1
|
* Update to netapp 0.4.2 (a tiny fix)Alex Auvolat2022-04-074-4/+4
|
* Bring maximum exponential backoff time down from 16h to 1hAlex Auvolat2022-04-071-1/+5
|
* New replication modes and their documentationfeature/documentationAlex Auvolat2022-03-281-4/+13
|
* fix a clippy lintAlex Auvolat2022-03-281-1/+1
|
* Add blocks in errored state to `garage stats`Alex Auvolat2022-03-282-0/+11
|
* Log admin GET requests at debug level instead of infoAlex Auvolat2022-03-281-1/+1
| | | | to reduce noise in logs
* Add feature flag for Kubernetes discoveryAlex Auvolat2022-03-246-79/+108
|
* Make layout optimization work in relative termsbug/layoutAlex Auvolat2022-03-241-9/+14
|
* Allow `garage layout assign` to assign to several nodes at onceAlex Auvolat2022-03-242-46/+56
|
* Slight change and add comment to layout assignation algoAlex Auvolat2022-03-241-37/+33
|
* Small change to partition assignation algorithmAlex Auvolat2022-03-242-9/+37
| | | | | | 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
* Add lots of comments on how the resync queue worksAlex Auvolat2022-03-231-5/+96
| | | | (I don't really want to change/refactor that code though)
* ClippyAlex Auvolat2022-03-232-5/+5
|
* Make background tranquility a configurable parameterAlex Auvolat2022-03-234-16/+25
|
* Move block RC code to separate `rc.rs`Alex Auvolat2022-03-233-136/+175
|
* Move DataBlock out of manager.rsAlex Auvolat2022-03-234-81/+86
|
* Move block manager to separate moduleAlex Auvolat2022-03-2311-41/+64
|
* cleanuptrinity-1686a2022-03-231-19/+4
|
* add test for create bucket and put website with streaming signaturetrinity-1686a2022-03-231-0/+84
|
* add test framework for arbitraty S3 requeststrinity-1686a2022-03-2312-16/+409
| | | | and implement some basic test with it
* garage_api: Update streaming payload stream unit testsKokaKiwi2022-03-231-1/+1
|
* garage_api: Handle streaming payload early in request handlingKokaKiwi2022-03-233-57/+61
|
* Update netapp to v0.4.1update-netappAlex Auvolat2022-03-154-4/+4
|
* Fix some new clippy lintsfix-resyncAlex Auvolat2022-03-1414-37/+22
|
* Add comment for fsyncAlex Auvolat2022-03-141-0/+5
|
* Fix resync queue to not drop itemsAlex Auvolat2022-03-141-16/+21
|
* Spawn a single resync workerAlex Auvolat2022-03-141-11/+7
|
* Add appropriate fsync() calls in write_blockAlex Auvolat2022-03-141-2/+13
| | | | to ensure that data is persisted properly
* Implement exponential backoff for resync retriesfeature/opentelemetrybug/resync-exponential-backoffAlex Auvolat2022-03-143-5/+106
|
* Make admin server optionalAlex Auvolat2022-03-142-8/+15
|
* Add wrapper over sled tree to count items (used for big queues)Alex Auvolat2022-03-148-7/+118
|
* Bump version to 0.7 because of incompatible NetappAlex Auvolat2022-03-149-31/+31
|
* Add spans to table calls, change span names in RPCAlex Auvolat2022-03-143-11/+54
|
* add missing netapp telemetry featureAlex Auvolat2022-03-142-2/+3
|
* Refactoring: rename config files, make modifications less invasiveAlex Auvolat2022-03-144-144/+158
|
* Add metrics to web endpointAlex Auvolat2022-03-145-17/+98
|
* Add metrics to API endpointAlex Auvolat2022-03-147-38/+135
|
* Refactor how durations are measuredAlex Auvolat2022-03-1410-67/+97
|
* Remove strum crate dependency; add protobuf nix dependencyAlex Auvolat2022-03-143-7/+2
|
* Remove ... at end of hex IDsAlex Auvolat2022-03-141-1/+1
|
* Update to Netapp 0.4 which supports distributed tracingAlex Auvolat2022-03-149-29/+51
|
* Add tracing integration with opentelemetryAlex Auvolat2022-03-1428-166/+296
|