Decentralized Durability Engine https://codex.storage
Go to file
Eric Mastro 4a70312ee9
feat: introduce blockstore manager
Implement blockstore manager which executes block storage operations on its block stores, in the order to which they were added to the manager, typically in the order of most local (fastest, eg cache) to least local (slowest, eg filesystem or perhaps a network filesystem). As an example, given a `BlockStoreManager` instantiated with a `@[MemoryStore, FSStore]`, retrieving a block would first attempt to get from the `MemoryStore`, and if not found, attempt to get from the `FSStore`.

Remove all dependencies on `BlockStores` (typically in the shape of `localstore`) and instead depend on `BlockStoreManager` via the `BlockExcEngine`.

Modify the role of the `BlockExcEngine` to make a “local vs remote” decision on block access/storage. For all operations other than retrieving blocks, this means simply going to the `BlockStoreManager`. For retrieving blocks, however, this means going first to the `BlockStoreManager`, and then if not found, going to the Dagger network (via pending block and want/have lists).

Remove `NetworkStore` as its two purposes were to defer block retrieval from a local store first, then go to the block exchange to requeest a block from the Dagger network. `BlockStoreManager` takes care of going to local storage first, and the block exchange engine handles going to Dagger network if retrieval from the store manager fails.

### Notes
1. Future work may want to consider breaking up `BlockExcEngine` further in to three modules:
  - `BlockExcEngine` (depends on `WantHave`, `DHT`)
  - `WantHave`
  - `DHT` (work is in progress)

Co-authored-by: Michael Bradley <michaelsbradleyjr@gmail.com>
2022-02-08 13:20:09 +11:00
.github/workflows don't run win i386 tests 2021-11-25 09:37:12 +01:00
dagger feat: introduce blockstore manager 2022-02-08 13:20:09 +11:00
tests feat: introduce blockstore manager 2022-02-08 13:20:09 +11:00
vendor refreshing stew (#43) 2022-01-12 16:52:09 -06:00
.editorconfig Project setup 2021-02-02 19:29:52 +01:00
.gitignore readding gitignore rules 2021-11-25 09:37:12 +01:00
.gitmodules Node setup (#32) 2022-01-10 09:32:56 -06:00
.tool-versions Poc 2 (#7) 2021-02-25 18:23:22 -06:00
Makefile adding nimbus build system 2021-11-25 09:37:12 +01:00
config.nims Node setup (#32) 2022-01-10 09:32:56 -06:00
dagger.nim Node setup (#32) 2022-01-10 09:32:56 -06:00
dagger.nimble Minor cleanup and update deps (#42) 2022-01-12 16:19:37 -06:00
env.sh add env.sh shim to project root (#34) 2021-12-20 13:12:18 -06:00
nim.cfg Disable ObservableStores warning 2021-11-16 16:51:24 +01:00