From 392d447b99eb54a163e6682597dfb60a96799546 Mon Sep 17 00:00:00 2001 From: Jaco Date: Thu, 6 Jan 2022 08:31:13 +0100 Subject: [PATCH] Adjust LRU historic size (clarify isCachable flag) (#4419) --- CHANGELOG.md | 7 +++++++ packages/rpc-core/src/bundle.ts | 2 ++ packages/rpc-provider/src/lru.ts | 5 ++++- packages/rpc-provider/src/ws/index.ts | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8115408c4..cccf0c9606 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## master + +Changes: + +- Adjust max-entries in historic provider LRU + + ## 7.2.1 Jan 3, 2022 Upgrade priority: Low. Recommended for users generating TS chain-specific augmentations. diff --git a/packages/rpc-core/src/bundle.ts b/packages/rpc-core/src/bundle.ts index e00e3dc6ee..f4688e4ccc 100644 --- a/packages/rpc-core/src/bundle.ts +++ b/packages/rpc-core/src/bundle.ts @@ -204,6 +204,8 @@ export class RpcCore { ? await this.#getBlockRegistry(u8aToU8a(blockHash)) : { registry: this.#registryDefault }; const params = this._formatInputs(registry, null, def, values); + + // only cache .at() queries, e.g. where valid blockHash was supplied const result = await this.provider.send(rpcName, params.map((p) => p.toJSON()), !!blockHash); return this._formatResult(isScale, registry, blockHash, method, def, params, result); diff --git a/packages/rpc-provider/src/lru.ts b/packages/rpc-provider/src/lru.ts index 2908705996..e68448c144 100644 --- a/packages/rpc-provider/src/lru.ts +++ b/packages/rpc-provider/src/lru.ts @@ -1,7 +1,10 @@ // Copyright 2017-2022 @polkadot/rpc-provider authors & contributors // SPDX-License-Identifier: Apache-2.0 -const DEFAULT_CAPACITY = 2048; +// Assuming all 1.5MB responses, we apply a default allowing for 576MB +// cache space (depending on the historic queries this would vary, metadata +// for Kusama/Polkadot/Substrate falls between 600-750K, 2x for estimate) +const DEFAULT_CAPACITY = 384; class LRUNode { public readonly key: string; diff --git a/packages/rpc-provider/src/ws/index.ts b/packages/rpc-provider/src/ws/index.ts index 5834f65901..a1e1e59431 100644 --- a/packages/rpc-provider/src/ws/index.ts +++ b/packages/rpc-provider/src/ws/index.ts @@ -328,6 +328,7 @@ export class WsProvider implements ProviderInterface { * ``` */ public subscribe (type: string, method: string, params: unknown[], callback: ProviderInterfaceCallback): Promise { + // subscriptions are not cached, LRU applies to .at() only return this.send(method, params, false, { callback, type }); }