- [#532] Download does not stop correctly
Issue Reported on [0.16.x-beta] When the synchronizer is stopped, the processor does not cancel the download correctly. Then when attempting to resume sync, the synchronizer is not on `.stopped` and can't be resumed Fix: This commit makes sure that the download streamer checks cancelation before processing any block, or getting called back to report progress
This commit is contained in:
parent
db15465ebe
commit
d8ee9ff277
|
@ -29,6 +29,7 @@ extension CompactBlockProcessor {
|
||||||
guard let latestHeight = targetHeightInternal else {
|
guard let latestHeight = targetHeightInternal else {
|
||||||
throw LightWalletServiceError.generalError(message: "missing target height on compactBlockStreamDownload")
|
throw LightWalletServiceError.generalError(message: "missing target height on compactBlockStreamDownload")
|
||||||
}
|
}
|
||||||
|
try Task.checkCancellation()
|
||||||
let latestDownloaded = try await storage.latestHeightAsync()
|
let latestDownloaded = try await storage.latestHeightAsync()
|
||||||
let startHeight = max(startHeight ?? BlockHeight.empty(), latestDownloaded)
|
let startHeight = max(startHeight ?? BlockHeight.empty(), latestDownloaded)
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ extension CompactBlockProcessor {
|
||||||
)
|
)
|
||||||
|
|
||||||
for try await zcashCompactBlock in stream {
|
for try await zcashCompactBlock in stream {
|
||||||
|
try Task.checkCancellation()
|
||||||
buffer.append(zcashCompactBlock)
|
buffer.append(zcashCompactBlock)
|
||||||
if buffer.count >= blockBufferSize {
|
if buffer.count >= blockBufferSize {
|
||||||
// TODO: writeAsync doesn't make sense here, awaiting it or calling blocking API have the same result and impact
|
// TODO: writeAsync doesn't make sense here, awaiting it or calling blocking API have the same result and impact
|
||||||
|
|
Loading…
Reference in New Issue