Commit Graph

101 Commits

Author SHA1 Message Date
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