vyzo
2080e467ba
don't set MaxReaders for tracking store
2021-03-05 14:46:17 +02:00
Raúl Kripalani
877ecab960
update go-bs-lmdb and migrate to ledgerwatch/lmdb-go.
2021-03-05 14:46:17 +02:00
vyzo
5b4e6b7b26
don't set max readers for livesets
2021-03-05 14:46:17 +02:00
vyzo
58a8434825
temporary log level for splitstore to DEBUG
2021-03-05 14:46:17 +02:00
vyzo
8b0087524f
adjust walk boundaries for marking
2021-03-05 14:46:17 +02:00
vyzo
76d6edbb52
fix max readers for tracking store
2021-03-05 14:46:17 +02:00
vyzo
1a23b1f6af
make CompactionThreshold a var to fix lotus-soup build
...
finality is not a constant there!
2021-03-05 14:46:17 +02:00
vyzo
6e51e6db9a
better handling of MDB_KEYEXIST in Put
2021-03-05 14:46:17 +02:00
vyzo
ce41e394dc
handle MDB_KEYEXIST in liveset marking
2021-03-05 14:46:17 +02:00
vyzo
843fd09a62
deal with MDB_KEY_EXIST errors
2021-03-05 14:46:17 +02:00
vyzo
f44cf0f2c4
appease linter
2021-03-05 14:46:17 +02:00
vyzo
facdc555b1
add nil check for curTs -- some tests don't have chain state
2021-03-05 14:46:17 +02:00
vyzo
e07c6c71c0
splitstore constructor
2021-03-05 14:46:17 +02:00
vyzo
b0f48b500f
use CAS for compacting state
2021-03-05 14:46:17 +02:00
vyzo
0af7b16ad5
simplify Has
2021-03-05 14:46:17 +02:00
vyzo
37e391f133
add TODO note about map size
2021-03-05 14:46:17 +02:00
vyzo
5db314f422
fallback to coldstore if snooping fails.
2021-03-05 14:46:17 +02:00
vyzo
d20cbc0c28
protect against potential data races
...
overkill, but let's not have race detectors scream at us.
2021-03-05 14:46:17 +02:00
vyzo
da478832cb
quiet linter
2021-03-05 14:46:17 +02:00
vyzo
4763397281
add tracking store test
2021-03-05 14:46:17 +02:00
vyzo
0d7476c5b2
implement LMDB-backed tracking store
2021-03-05 14:46:17 +02:00
vyzo
83f8a0ab12
quiet linter
2021-03-05 14:46:17 +02:00
vyzo
5043f31adf
liveset unit test
2021-03-05 14:46:17 +02:00
vyzo
3f92a000c7
implement lmdb-backed LiveSet
2021-03-05 14:46:17 +02:00
vyzo
0bf1a78b39
stubs for tracking store and live set
2021-03-05 14:46:17 +02:00
vyzo
17bc5fcd85
move splitstore implementation to its own directory
2021-03-05 14:46:17 +02:00
vyzo
2c9b58aaec
add some logging
2021-03-05 14:46:17 +02:00
vyzo
c1b1a9ce2a
avoid race with compacting state variable
2021-03-05 14:46:17 +02:00
vyzo
3083d80f5e
no need to import go-ipfs-blockstore, lib/blockstore will do
2021-03-05 14:46:17 +02:00
vyzo
101e5c6540
close keys channel when dome emitting keys
2021-03-05 14:46:17 +02:00
vyzo
b945747eb2
satisfy linter
2021-03-05 14:46:17 +02:00
vyzo
2bed6c94cd
use dual live set marking algorithm to keep all hotly reachable objects in the hotstore
2021-03-05 14:46:17 +02:00
vyzo
c2cc198316
fix off by 1 in marking
2021-03-05 14:46:17 +02:00
vyzo
fd08786048
track base epoch in metadata ds
2021-03-05 14:46:17 +02:00
vyzo
b192adfd2e
trigger compaction from head changes
2021-03-05 14:46:17 +02:00
vyzo
c8f1139e0d
compaction algorithm
2021-03-05 14:46:17 +02:00
vyzo
6577cc8ea6
splitstore struct and Blockstore interface implementation
2021-03-05 14:46:17 +02:00
Raúl Kripalani
1ac0c9a926
address review comments.
2021-03-02 21:29:24 +00:00
Raúl Kripalani
2047a74958
implement blockstore.Union, a union blockstore.
...
The union blockstore takes a list of blockstores. It returns the first
satisfying read, and broadcasts writes to all stores.
It can be used for operations that require reading from any two blockstores,
for example WalkSnapshot.
2021-03-02 17:03:11 +00:00
Raúl Kripalani
b1c348b4a7
address review comments.
2021-03-02 16:31:01 +00:00
Raúl Kripalani
3795cc2bd2
segregate chain and state blockstores.
...
This paves the way for better object lifetime management.
Concretely, it makes it possible to:
- have different stores backing chain and state data.
- having the same datastore library, but using different parameters.
- attach different caching layers/policies to each class of data, e.g.
sizing caches differently.
- specifying different retention policies for chain and state data.
This separation is important because:
- access patterns/frequency of chain and state data are different.
- state is derivable from chain, so one could never expunge the chain
store, and only retain state objects reachable from the last finality
in the state store.
2021-02-28 22:49:44 +00:00
Raúl Kripalani
7f0f7d0b36
Merge branch 'master' into refactor/lib/blockstore
2021-02-28 19:55:23 +00:00
vyzo
5c6988a7c1
refactor coalescing logic into its own function, take both cancellation sets into account
2021-02-02 21:26:50 +02:00
Raúl Kripalani
d1104fec4c
rename blockstores for consistency.
2021-01-29 23:17:25 +00:00
Raúl Kripalani
b0cbc932bd
consolidate all blockstores in blockstore package.
2021-01-29 20:01:00 +00:00
Raúl Kripalani
a1da1dab85
add context to LockedRepo#Datastore().
2021-01-26 11:01:43 +00:00
Raúl Kripalani
ce3af308ed
Merge branch 'master' into chore/snake_context_through_blockstore_init
2021-01-25 19:31:41 +00:00
Łukasz Magiera
2b3d66da3b
Merge pull request #5362 from filecoin-project/feat/fullnode-restore
...
Implement full-node restore option
2021-01-18 23:42:20 +01:00
Lucas Molas
69eb2163d2
fix(sync): enforce fork len when changing head ( #5244 )
2021-01-18 12:34:25 -03:00
Łukasz Magiera
38f9559080
Implement full-node restore option
2021-01-15 20:57:32 +01:00