Raúl Kripalani
d88042c422
improve code readability.
2019-02-05 16:52:27 +00:00
Raúl Kripalani
f0eb25b3c5
pstore ds: enforce order in gc queries.
2019-02-05 15:07:30 +00:00
Raúl Kripalani
fd9c9287e2
return error when committing a closed cyclic batch.
2018-12-04 11:47:44 +00:00
Raúl Kripalani
53d45e9406
make gc operations run on cyclic batches.
2018-12-03 17:40:01 +00:00
Raúl Kripalani
a306a6eadb
add a benchmark for lookahead cycles.
2018-12-03 15:54:41 +00:00
Raúl Kripalani
e43a2fc519
drop the need for a transactional datastore; introduce buffer pool.
2018-12-03 15:43:37 +00:00
Raúl Kripalani
8fa350be35
fix raciness in init logic; dedicated goroutines for GC and flushing.
2018-11-30 17:32:51 +00:00
Raúl Kripalani
19eea773fa
rename addrsRecord.Refresh() => addrsRecord.Clean().
2018-11-30 16:56:37 +00:00
Raúl Kripalani
943429ff4b
Revert "use a Pool for address record objects."
2018-11-30 16:19:57 +00:00
Raúl Kripalani
c3c24b227a
rename GCPruneInterval to GCPurgeInterval for consistency.
2018-11-28 01:29:09 +00:00
Raúl Kripalani
bbff6b7522
improve test coverage of new GC routine.
2018-11-28 01:08:25 +00:00
Raúl Kripalani
03a40a855a
minor cleanup.
2018-11-28 00:56:51 +00:00
Raúl Kripalani
3a85498ae8
add tests for new GC routines.
2018-11-28 00:13:13 +00:00
Raúl Kripalani
35444fbc6a
implement two-tiered lookahead-based GC procedure.
...
The GC procedure consists of two tiers: lookahead and purge. The
lookahead tier runs less frequently (default 12 hours) than the purge
tier (default 5 minutes).
A lookahead round traverses the entire store and picks entries that
need to be visited in the current lookahead window, pinning those
entries in a separate region in the KV store, indexed by the next visit
timestamp.
A purge round iterates over the lookahead window only, and refreshes
the entries that require a visit. It removes them from the lookahead
region unless the entry requires another visit within the current
window.
2018-11-28 00:13:02 +00:00
Raúl Kripalani
ef8e8ff359
use a Pool for address record objects.
2018-11-15 18:48:40 +00:00
Raúl Kripalani
390e8c3f44
add Keys() function to private cache interface for completeness.
2018-11-15 18:39:38 +00:00
Raúl Kripalani
bd80609ef6
adjust GC interval in tests.
2018-11-15 13:55:53 +00:00
Raúl Kripalani
e57f21a66c
Merge branch 'master' into feat/pstore-ds-gc
2018-11-15 13:44:13 +00:00
Raúl Kripalani
4c43736fe9
pstoreds: tighten up gc-based peerstore.
...
Introduces custom types in protobuf to serde directly into multiaddrs
and peer IDs. Simplify purge by ordering addrs by expiry. In general,
getting this readier for merge.
2018-11-15 13:32:08 +00:00
Raúl Kripalani
c423e9e997
pstoreds: migrate from strict TTL to GC-based expiry.
...
Each entry in the address book KV store now represents a full peer
with all its addresses. Expiries and TTLs are kept inline. Records are
serialised with Protobuf.
Housekeeping is performed on retrieve, and via a periodic GC routine.
The architecture mimics a write-through cache, although not strictly.
2018-11-13 16:57:51 +00:00
Adrian Lanzafame
c04ff2d27b
add keybook benchmarks
...
License: MIT
Signed-off-by: Adrian Lanzafame <adrianlanzafame92@gmail.com>
2018-11-07 15:48:31 +10:00
Adrian Lanzafame
ee43bc1951
prevent timeout by un-nesting tb.Runs
...
License: MIT
Signed-off-by: Adrian Lanzafame <adrianlanzafame92@gmail.com>
2018-11-07 15:48:31 +10:00
Steven Allen
588ab36ce8
update to match new ExtractPublicKey API
...
This is a "more correct" API and we might as well fix this before it becomes
used all over the place. The new API returns ErrNoPublicKey when there is no
inlined key.
This *also* fixes a bug where the datastore-backed keystore would panic if
`ExtractPublicKey` returned `nil, nil`.
2018-10-16 11:31:32 +01:00
Raúl Kripalani
4e2e2de65f
ds key encoding: b58 => b32 (no padding).
2018-10-04 10:51:57 +01:00
Raúl Kripalani
61b5355499
run tests against multiple datastores.
...
leveldb disabled for now, until TTL shim is implemented.
2018-10-04 10:50:45 +01:00
Raúl Kripalani
3e80eb1873
review comments.
2018-09-28 18:47:41 +01:00
Raúl Kripalani
dd3cb20421
add explicit import aliases.
2018-09-28 14:18:05 +01:00
Raúl Kripalani
1b72b920ed
datastore-backed impls of KeyBook and PeerMetadata.
2018-09-28 14:04:52 +01:00
Raúl Kripalani
196ad55260
ds.NewTransaction() can now return an error.
2018-09-27 20:59:57 +01:00
Raúl Kripalani
0f81bdf419
introduce struct for persisted value.
2018-09-18 19:01:24 +01:00
Raúl Kripalani
5b9ad98cc2
remove noop Stop() in address book.
2018-09-18 19:00:07 +01:00
Raúl Kripalani
4b2c1212e7
add a test and fix broken logic.
2018-09-14 18:27:23 +01:00
Raúl Kripalani
3a4d8096cf
remove unnecessary return values.
2018-09-14 17:35:49 +01:00
Raúl Kripalani
b75ed37f2b
reintroduce import prefixes.
2018-09-13 16:10:14 +01:00
Raúl Kripalani
23be462e82
Merge branch 'txndatastore' into ttldatastore
2018-09-13 16:02:09 +01:00
Raúl Kripalani
7e645fa115
do not prettify cache keys (peer ids).
2018-09-13 15:33:30 +01:00
Raúl Kripalani
afc9ee92b0
performance optimisation round.
2018-09-13 15:33:30 +01:00
Raúl Kripalani
9277207b35
remove deprecated ttlManager.
2018-09-13 12:49:03 +01:00
Raúl Kripalani
80fc9f03ca
migrate from bespoke TTL manager to db-managed TTLs.
2018-09-13 12:21:30 +01:00
Raúl Kripalani
c7d99489fd
address review comments.
2018-09-12 13:53:10 +01:00
Raúl Kripalani
4037390c42
increase test coverage.
2018-09-11 18:17:27 +01:00
Raúl Kripalani
7ae2621803
small fixes.
2018-09-11 14:42:19 +01:00
Raúl Kripalani
eb2575505d
fix bug in PeersWithAddrs().
2018-09-11 14:14:56 +01:00
Raúl Kripalani
1b410c7294
Merge branch 'master' into txndatastore
2018-09-11 14:13:14 +01:00
Raúl Kripalani
903aa12603
check cache in ClearAddrs and perform targeted delete.
2018-09-11 12:43:36 +01:00
Raúl Kripalani
03ee26fd4f
change cache layout, now peer.ID => []ma.Multiaddr.
2018-09-11 11:48:23 +01:00
Raúl Kripalani
ca6f050174
add baseline benchmarks.
2018-09-10 19:59:27 +01:00
Raúl Kripalani
1c25f160a1
normalise import aliases.
2018-09-07 18:46:23 +01:00
Raúl Kripalani
2901497643
migrate Addrs() and PeersWithAddrs() to use txns, improve perf, benchmarks.
2018-09-07 18:37:01 +01:00
Raúl Kripalani
171f051aa1
add tests for keybook; []peer.ID => peer.IDSlice.
2018-09-07 13:04:14 +01:00
Raúl Kripalani
d79386365e
rename NewPeerstoreWith(...) => NewPeerstore(...); adjust godoc.
2018-09-05 15:14:57 +01:00
Raúl Kripalani
bc77b649dc
rename AddrMgr => AddrBook elsewhere.
2018-09-05 15:10:18 +01:00
Raúl Kripalani
7f4288fab1
rename package mem => pstoremem.
2018-09-04 18:07:44 +01:00
Raúl Kripalani
7d8b6c9843
ttl manager: create transaction only when needed.
...
Also adjust test logic. Last changes were ticking the ttl manager
too often unnecessarily. This was skewing benchmarks.
2018-09-04 14:52:26 +01:00
Raúl Kripalani
de573ac1ff
migrate TTL manager to ds.TxnDatastore.
2018-09-07 17:45:29 +01:00
Raúl Kripalani
1b57c62e3d
increase benchmark coverage; introduce config struct.
...
* benchmark caching and cacheless variants of DS addrbook.
* benchmark peers with 1, 10, 100 addrs.
2018-09-07 17:45:29 +01:00
Raúl Kripalani
f8aeb5476e
another perf improvement iteration.
2018-09-07 17:45:25 +01:00
Raúl Kripalani
2f98672d1d
rename *Peers() to PeersWith*().
2018-09-02 12:18:00 +01:00
Raúl Kripalani
e200f3a5c1
gx-go unrewrite.
2018-09-02 12:10:55 +01:00
Raúl Kripalani
d0c3d2b341
rename ds package to pstoreds.
2018-09-02 12:03:02 +01:00