BlockStore: delBlock got new type (#123)

Now every store traces only its own operations and failures (currently implemented only for delBlock)
This commit is contained in:
Bulat-Ziganshin 2022-06-28 19:10:05 +03:00 committed by GitHub
parent c0b385176d
commit 15ae157e61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 37 additions and 39 deletions

View File

@ -41,8 +41,8 @@ method putBlock*(
method delBlock*(
s: BlockStore,
cid: Cid): Future[bool] {.base.} =
## Delete a block/s from the block store
cid: Cid): Future[?!void] {.base.} =
## Delete a block from the blockstore
##
raiseAssert("Not implemented!")

View File

@ -109,23 +109,20 @@ method putBlock*(
method delBlock*(
self: CacheStore,
cid: Cid): Future[bool] {.async.} =
## delete a block/s from the block store
cid: Cid): Future[?!void] {.async.} =
## Delete a block from the blockstore
##
trace "Deleting block from cache", cid
if cid.isEmpty:
trace "Empty block, ignoring"
return true
return success()
try:
let removed = self.cache.del(cid)
if removed.isSome:
self.currentSize -= removed.get.data.len
return true
return false
except EmptyLruCacheError:
return false
let removed = self.cache.del(cid)
if removed.isSome:
self.currentSize -= removed.get.data.len
return success()
func new*(
_: type CacheStore,

View File

@ -97,26 +97,25 @@ method putBlock*(
method delBlock*(
self: FSStore,
cid: Cid): Future[bool] {.async.} =
## Delete a block/s from the block store
cid: Cid): Future[?!void] {.async.} =
## Delete a block from the blockstore
##
trace "Deleting block from filestore", cid
if cid.isEmpty:
trace "Empty block, ignoring"
return true
return success()
let path = self.blockPath(cid)
if (
let res = io2.removeFile(path);
res.isErr):
let error = io2.ioErrorMsg(res.error)
trace "Unable to delete block", path, cid, error
return false
let
path = self.blockPath(cid)
res = io2.removeFile(path)
if not (await self.cache.delBlock(cid)):
trace "Unable to delete block from cache", cid
if res.isErr:
let errmsg = io2.ioErrorMsg(res.error)
trace "Unable to delete block", path, cid, errmsg
return errmsg.failure
return true
return await self.cache.delBlock(cid)
method hasBlock*(self: FSStore, cid: Cid): bool =
## Check if the block exists in the blockstore

View File

@ -66,11 +66,12 @@ method putBlock*(
method delBlock*(
self: NetworkStore,
cid: Cid): Future[bool] =
## Delete a block/s from the block store
cid: Cid): Future[?!void] =
## Delete a block from the blockstore
##
self.localStore.delBlock(cid)
trace "Deleting block from networkstore", cid
return self.localStore.delBlock(cid)
{.pop.}

View File

@ -93,17 +93,18 @@ suite "Cache Store tests":
test "delBlock":
# empty cache
check not await store.delBlock(newBlock1.cid)
(await store.delBlock(newBlock1.cid)).tryGet()
# successfully deleted
discard await store.putBlock(newBlock1)
check await store.delBlock(newBlock1.cid)
(await store.delBlock(newBlock1.cid)).tryGet()
# deletes item should decrement size
store = CacheStore.new(@[newBlock1, newBlock2, newBlock3])
check:
store.currentSize == 300
await store.delBlock(newBlock2.cid)
(await store.delBlock(newBlock2.cid)).tryGet()
check:
store.currentSize == 200
newBlock2.cid notin store

View File

@ -68,5 +68,5 @@ suite "FS Store":
createDir(store.blockPath(newBlock.cid).parentDir)
writeFile(store.blockPath(newBlock.cid), newBlock.data)
check await store.delBlock(newBlock.cid)
(await store.delBlock(newBlock.cid)).tryGet()
check not fileExists(store.blockPath(newBlock.cid))

View File

@ -66,7 +66,7 @@ suite "Erasure encode/decode":
for _ in 0..<encoded.M:
dropped.add(encoded[column])
check (await store.delBlock(encoded[column]))
(await store.delBlock(encoded[column])).tryGet()
column.inc(encoded.steps)
var
@ -93,7 +93,7 @@ suite "Erasure encode/decode":
for _ in 0..<encoded.M + 1:
dropped.add(encoded[column])
check (await store.delBlock(encoded[column]))
(await store.delBlock(encoded[column])).tryGet()
column.inc(encoded.steps)
var
@ -125,7 +125,7 @@ suite "Erasure encode/decode":
offset.inc
for idx in blocks:
check (await store.delBlock(encoded[idx]))
(await store.delBlock(encoded[idx])).tryGet()
discard (await erasure.decode(encoded)).tryGet()
@ -158,7 +158,7 @@ suite "Erasure encode/decode":
offset.inc
for idx in blocks:
check (await store.delBlock(encoded[idx]))
(await store.delBlock(encoded[idx])).tryGet()
var
decoded: Manifest
@ -174,7 +174,7 @@ suite "Erasure encode/decode":
let encoded = await encode(buffers, parity)
for b in encoded.blocks[0..<encoded.steps * encoded.M]:
check (await store.delBlock(b))
(await store.delBlock(b)).tryGet()
discard (await erasure.decode(encoded)).tryGet()
@ -189,7 +189,7 @@ suite "Erasure encode/decode":
let encoded = await encode(buffers, parity)
for b in encoded.blocks[^(encoded.steps * encoded.M)..^1]:
check (await store.delBlock(b))
(await store.delBlock(b)).tryGet()
discard (await erasure.decode(encoded)).tryGet()