Merge pull request #3178 from mempool/mononaut/clear-block-cache

Reset scrolling blockchain cache when network changes
This commit is contained in:
softsimon 2023-03-01 09:12:37 +04:00 committed by GitHub
commit 7875829370
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,6 +17,7 @@ export class CacheService {
txCache: { [txid: string]: Transaction } = {};
network: string;
blockCache: { [height: number]: BlockExtended } = {};
blockLoading: { [height: number]: boolean } = {};
copiesInBlockQueue: { [height: number]: number } = {};
@ -33,6 +34,10 @@ export class CacheService {
this.stateService.chainTip$.subscribe((height) => {
this.tip = height;
});
this.stateService.networkChanged$.subscribe((network) => {
this.network = network;
this.resetBlockCache();
});
}
setTxCache(transactions) {
@ -68,15 +73,17 @@ export class CacheService {
} catch (e) {
console.log("failed to load blocks: ", e.message);
}
for (let i = 0; i < chunkSize; i++) {
delete this.blockLoading[maxHeight - i];
}
if (result && result.length) {
result.forEach(block => {
this.addBlockToCache(block);
this.loadedBlocks$.next(block);
if (this.blockLoading[block.height]) {
this.addBlockToCache(block);
this.loadedBlocks$.next(block);
}
});
}
for (let i = 0; i < chunkSize; i++) {
delete this.blockLoading[maxHeight - i];
}
this.clearBlocks();
} else {
this.bumpBlockPriority(height);
@ -104,6 +111,14 @@ export class CacheService {
}
}
// remove all blocks from the cache
resetBlockCache() {
this.blockCache = {};
this.blockLoading = {};
this.copiesInBlockQueue = {};
this.blockPriorities = [];
}
getCachedBlock(height) {
return this.blockCache[height];
}