mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-05-21 17:19:27 +00:00
Update to 2.2.8
This commit is contained in:
parent
754765ba31
commit
1b6376b843
22
.github/workflows/ci.yml
vendored
22
.github/workflows/ci.yml
vendored
@ -7,16 +7,16 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
nim: [2.2.4]
|
||||
nim: [2.2.8]
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- uses: jiro4989/setup-nim-action@v2
|
||||
with:
|
||||
nim-version: ${{matrix.nim}}
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build
|
||||
run: nimble install -y
|
||||
- name: Test
|
||||
run: nimble test -y
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- uses: jiro4989/setup-nim-action@v2
|
||||
with:
|
||||
nim-version: ${{matrix.nim}}
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build
|
||||
run: nimble install -y
|
||||
- name: Test
|
||||
run: nimble test -y
|
||||
|
||||
@ -7,11 +7,11 @@ license = "MIT"
|
||||
skipDirs = @["tests"]
|
||||
|
||||
# Dependencies
|
||||
requires "nim >= 2.2.4 & < 3.0.0"
|
||||
requires "nim >= 2.2.8 & < 3.0.0"
|
||||
requires "secp256k1 >= 0.6.0 & < 0.7.0"
|
||||
requires "nimcrypto >= 0.6.2 & < 0.8.0"
|
||||
requires "bearssl >= 0.2.5 & < 0.3.0"
|
||||
requires "chronicles >= 0.11.2 & < 0.13.0"
|
||||
requires "chronicles >= 0.12.3 & < 0.13.0"
|
||||
requires "chronos >= 4.0.4 & < 4.1.0"
|
||||
requires "libp2p >= 1.14.1 & < 2.0.0"
|
||||
requires "metrics >= 0.1.0 & < 0.2.0"
|
||||
|
||||
@ -50,19 +50,23 @@ proc cleanupExpired*(
|
||||
now = times.now().utc().toTime().toUnix()
|
||||
|
||||
for item in iter:
|
||||
if (maybeKey, data) =? (await item) and key =? maybeKey:
|
||||
let
|
||||
expired = endians2.fromBytesBE(uint64, data).int64
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (maybeKey, data) = res.value
|
||||
if maybeKey.isSome:
|
||||
let key = maybeKey.get()
|
||||
let
|
||||
expired = endians2.fromBytesBE(uint64, data).int64
|
||||
|
||||
if now >= expired:
|
||||
trace "Found expired record", key
|
||||
keys.add(key)
|
||||
without pairs =? key.fromCidKey(), err:
|
||||
trace "Error extracting parts from cid key", key
|
||||
continue
|
||||
if now >= expired:
|
||||
trace "Found expired record", key
|
||||
keys.add(key)
|
||||
without pairs =? key.fromCidKey(), err:
|
||||
trace "Error extracting parts from cid key", key
|
||||
continue
|
||||
|
||||
if keys.len >= batchSize:
|
||||
break
|
||||
if keys.len >= batchSize:
|
||||
break
|
||||
|
||||
if err =? (await store.delete(keys)).errorOption:
|
||||
trace "Error cleaning up batch, records left intact!", size = keys.len, err = err.msg
|
||||
@ -93,37 +97,44 @@ proc cleanupOrphaned*(
|
||||
trace "Batch cleaned up", size = batchSize
|
||||
|
||||
count.inc
|
||||
if (maybeKey, _) =? (await item) and key =? maybeKey:
|
||||
without peerId =? key.fromProvKey(), err:
|
||||
trace "Error extracting parts from cid key", key
|
||||
continue
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (maybeKey, _) = res.value
|
||||
if maybeKey.isSome:
|
||||
let key = maybeKey.get()
|
||||
without peerId =? key.fromProvKey(), err:
|
||||
trace "Error extracting parts from cid key", key
|
||||
continue
|
||||
|
||||
without cidKey =? (CidKey / "*" / $peerId), err:
|
||||
trace "Error building cid key", err = err.msg
|
||||
continue
|
||||
without cidKey =? (CidKey / "*" / $peerId), err:
|
||||
trace "Error building cid key", err = err.msg
|
||||
continue
|
||||
|
||||
without cidIter =? (await store.query(Query.init(cidKey, limit = 1, value = false))), err:
|
||||
trace "Error querying key", cidKey, err = err.msg
|
||||
continue
|
||||
without cidIter =? (await store.query(Query.init(cidKey, limit = 1, value = false))), err:
|
||||
trace "Error querying key", cidKey, err = err.msg
|
||||
continue
|
||||
|
||||
let
|
||||
res = block:
|
||||
var count = 0
|
||||
for item in cidIter:
|
||||
if (key, _) =? (await item) and key.isSome:
|
||||
count.inc
|
||||
count
|
||||
let
|
||||
res = block:
|
||||
var count = 0
|
||||
for item in cidIter:
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (key,_) = res.value
|
||||
if key.isSome:
|
||||
count.inc
|
||||
count
|
||||
|
||||
if not isNil(cidIter):
|
||||
trace "Disposing cid iter"
|
||||
discard (await cidIter.dispose())
|
||||
if not isNil(cidIter):
|
||||
trace "Disposing cid iter"
|
||||
discard (await cidIter.dispose())
|
||||
|
||||
if res > 0:
|
||||
trace "Peer not orphaned, skipping", peerId
|
||||
continue
|
||||
if res > 0:
|
||||
trace "Peer not orphaned, skipping", peerId
|
||||
continue
|
||||
|
||||
if err =? (await store.delete(key)).errorOption:
|
||||
trace "Error deleting orphaned peer", err = err.msg
|
||||
continue
|
||||
if err =? (await store.delete(key)).errorOption:
|
||||
trace "Error deleting orphaned peer", err = err.msg
|
||||
continue
|
||||
|
||||
trace "Cleaned up orphaned peer", peerId
|
||||
trace "Cleaned up orphaned peer", peerId
|
||||
|
||||
@ -139,32 +139,37 @@ proc get*(
|
||||
|
||||
var keys: seq[Key]
|
||||
for item in cidIter:
|
||||
# TODO: =? doesn't support tuples
|
||||
if (maybeKey, val) =? (await item) and key =? maybeKey:
|
||||
without pairs =? key.fromCidKey() and
|
||||
provKey =? makeProviderKey(pairs.peerId), err:
|
||||
trace "Error creating key from provider record", err = err.msg
|
||||
continue
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (maybeKey, val) = res.value
|
||||
if maybeKey.isSome:
|
||||
let key = maybeKey.get()
|
||||
without pairs =? key.fromCidKey() and
|
||||
provKey =? makeProviderKey(pairs.peerId), err:
|
||||
trace "Error creating key from provider record", err = err.msg
|
||||
continue
|
||||
|
||||
trace "Querying provider key", key = provKey
|
||||
without data =? (await self.store.get(provKey)):
|
||||
trace "Error getting provider", key = provKey
|
||||
keys.add(key)
|
||||
continue
|
||||
trace "Querying provider key", key = provKey
|
||||
without data =? (await self.store.get(provKey)):
|
||||
trace "Error getting provider", key = provKey
|
||||
keys.add(key)
|
||||
continue
|
||||
|
||||
without provider =? SignedPeerRecord.decode(data).mapErr(mapFailure), err:
|
||||
trace "Unable to decode provider from store", err = err.msg
|
||||
keys.add(key)
|
||||
continue
|
||||
without provider =? SignedPeerRecord.decode(data).mapErr(mapFailure), err:
|
||||
trace "Unable to decode provider from store", err = err.msg
|
||||
keys.add(key)
|
||||
continue
|
||||
|
||||
trace "Retrieved provider with key", key = provKey
|
||||
providers.add(provider)
|
||||
self.cache.add(id, provider)
|
||||
trace "Retrieved provider with key", key = provKey
|
||||
providers.add(provider)
|
||||
self.cache.add(id, provider)
|
||||
|
||||
trace "Deleting keys without provider from store", len = keys.len
|
||||
if keys.len > 0 and err =? (await self.store.delete(keys)).errorOption:
|
||||
trace "Error deleting records from persistent store", err = err.msg
|
||||
return failure err
|
||||
if keys.len > 0:
|
||||
let res = await self.store.delete(keys)
|
||||
if res.isErr:
|
||||
trace "Error deleting records from persistent store", err = res.error.msg
|
||||
return failure res.error
|
||||
|
||||
trace "Retrieved providers from persistent store", id = id, len = providers.len
|
||||
return success providers
|
||||
@ -202,8 +207,11 @@ proc contains*(self: ProvidersManager, id: NodeId): Future[bool] {.async.} =
|
||||
discard (await iter.dispose())
|
||||
|
||||
for item in iter:
|
||||
if (key, _) =? (await item) and key.isSome:
|
||||
return true
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (key, _) = res.value
|
||||
if key.isSome:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
@ -230,19 +238,24 @@ proc remove*(self: ProvidersManager, id: NodeId): Future[?!void] {.async.} =
|
||||
keys: seq[Key]
|
||||
|
||||
for item in iter:
|
||||
if (maybeKey, _) =? (await item) and key =? maybeKey:
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (maybeKey, _) = res.value
|
||||
if maybeKey.isSome:
|
||||
let key = maybeKey.get()
|
||||
keys.add(key)
|
||||
without pairs =? key.fromCidKey, err:
|
||||
trace "Unable to parse peer id from key", key
|
||||
return failure err
|
||||
|
||||
keys.add(key)
|
||||
without pairs =? key.fromCidKey, err:
|
||||
trace "Unable to parse peer id from key", key
|
||||
return failure err
|
||||
self.cache.remove(id, pairs.peerId)
|
||||
trace "Deleted record from store", key
|
||||
|
||||
self.cache.remove(id, pairs.peerId)
|
||||
trace "Deleted record from store", key
|
||||
|
||||
if keys.len > 0 and err =? (await self.store.delete(keys)).errorOption:
|
||||
trace "Error deleting record from persistent store", err = err.msg
|
||||
return failure err
|
||||
if keys.len > 0:
|
||||
let res = await self.store.delete(keys)
|
||||
if res.isErr:
|
||||
trace "Error deleting record from persistent store", err = res.error()
|
||||
return failure res.error()
|
||||
|
||||
return success()
|
||||
|
||||
@ -272,15 +285,21 @@ proc remove*(
|
||||
keys: seq[Key]
|
||||
|
||||
for item in iter:
|
||||
if (maybeKey, _) =? (await item) and key =? maybeKey:
|
||||
keys.add(key)
|
||||
let res = await item
|
||||
if res.isOk:
|
||||
let (maybeKey, _) = res.value
|
||||
if maybeKey.isSome:
|
||||
let key = maybeKey.get()
|
||||
keys.add(key)
|
||||
|
||||
let
|
||||
parts = key.id.split(datastore.Separator)
|
||||
let
|
||||
parts = key.id.split(datastore.Separator)
|
||||
|
||||
if keys.len > 0 and err =? (await self.store.delete(keys)).errorOption:
|
||||
trace "Error deleting record from persistent store", err = err.msg
|
||||
return failure err
|
||||
if keys.len > 0:
|
||||
let res = await self.store.delete(keys)
|
||||
if res.isErr:
|
||||
trace "Error deleting record from persistent store", err = res.error()
|
||||
return failure res.error()
|
||||
|
||||
trace "Deleted records from store"
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user