aboutsummaryrefslogtreecommitdiff
path: root/src/garage/repair.rs
Commit message (Collapse)AuthorAgeFilesLines
* First implementation of K2V (#293)Alex2022-05-101-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **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>
* New model for bucketsAlex Auvolat2022-01-041-2/+2
|
* Add tranquilizer mechanism to improve on token bucket mechanismtranquilityAlex Auvolat2021-11-041-2/+2
|
* Refactoring on repair commandscli-verify-integrityAlex Auvolat2021-10-271-49/+31
|
* add cli parameter to verify local bloc integrityTrinity Pointard2021-10-271-0/+8
| | | | | reuse code for listing local blocks add disk i/o speed limit on integrity check
* Some improvements in background worker but we terminate lateAlex Auvolat2021-03-151-5/+1
|
* Refactor block resync loop; make workers infaillibleAlex Auvolat2021-03-151-0/+10
|
* Fix race conditionAlex Auvolat2021-03-151-17/+3
|
* (not well tested) use merkle tree for syncAlex Auvolat2021-03-111-22/+11
|
* WIP big refactoringAlex Auvolat2021-03-111-22/+7
|
* Refactor model stuff, including cleaner CRDTsAlex Auvolat2021-03-101-5/+4
|
* Rename garage_core to garage_modelAlex Auvolat2020-07-071-4/+4
|
* Repair: do not mark deleted when upstream object is not foundAlex Auvolat2020-05-041-4/+4
| | | | | | | | | | With the previous behaviour, repairing could see some data as absent and decide that the object or version was deleted, thus going on to delete the version and blocks. In the case where read_quorum + write_quorum <= replication_factor however, entries may not yet be returned by the get, thus data would have been deleted that should hot have been. The new behavior is more cautious and just skips the entry when the warning is emitted.
* Fix deletion propagationAlex Auvolat2020-04-261-1/+5
|
* Add key table to repair procedureAlex Auvolat2020-04-261-0/+7
|
* Split code for modular compilationAlex Auvolat2020-04-241-0/+183