From ee26cc1e61544d28316894b0ed4d934e8ca90fbc Mon Sep 17 00:00:00 2001 From: "Thang X. Vu" Date: Thu, 5 Feb 2026 01:07:01 +0700 Subject: [PATCH 1/3] fix stop recovery --- packages/api/src/json-rpc/group/ChainHead/ChainHead.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts index a290e933..2ad08bb5 100644 --- a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts +++ b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts @@ -335,12 +335,12 @@ export class ChainHead extends JsonRpcGroup { // Build initial pinned blocks this.#finalizedHash = finalizedBlockHashes.at(-1); - if (!this.#bestHash) { + this.#pinnedBlocks = this.#buildInitialPinnedBlocks(finalizedBlockHashes, this.#finalizedRuntime); + + if (!this.#bestHash || (this.#bestHash && !this.findBlock(this.#bestHash))) { this.#bestHash = this.#finalizedHash; } - this.#pinnedBlocks = this.#buildInitialPinnedBlocks(finalizedBlockHashes, this.#finalizedRuntime); - await this.#updateBlockNumbersAndParents(finalizedBlockHashes, prevPinnedBlocks); // Handle first initialization or reconnection From 0eca906c541b1b6ad51424e047f3e5f17a14b04b Mon Sep 17 00:00:00 2001 From: "Thang X. Vu" Date: Thu, 5 Feb 2026 01:07:27 +0700 Subject: [PATCH 2/3] adjust mortality --- packages/api/src/extrinsic/extensions/known/CheckMortality.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/api/src/extrinsic/extensions/known/CheckMortality.ts b/packages/api/src/extrinsic/extensions/known/CheckMortality.ts index e33f5b02..be4500f2 100644 --- a/packages/api/src/extrinsic/extensions/known/CheckMortality.ts +++ b/packages/api/src/extrinsic/extensions/known/CheckMortality.ts @@ -1,13 +1,12 @@ import { BlockHash, EraLike, Hash, Header } from '@dedot/codecs'; import { SignerPayloadJSON } from '@dedot/types'; import { assert, bnMin, hexToNumber, isZeroHex, numberToHex, u8aToHex } from '@dedot/utils'; -import { V2Client } from '../../../client/V2Client.js'; import { SignedExtension } from '../SignedExtension.js'; export const MAX_FINALITY_LAG: number = 5; export const FALLBACK_MAX_HASH_COUNT: number = 250; export const FALLBACK_PERIOD: number = 6 * 1000; -export const MORTAL_PERIOD: number = 5 * 60 * 1000; +export const MORTAL_PERIOD: number = 12 * 60 * 1000; interface SigningHeader { hash: BlockHash; @@ -43,7 +42,6 @@ export class CheckMortality extends SignedExtension { } async #getSigningHeaderRpcV2(): Promise { - // TODO similar to the legacy, we should account for the case finality is lagging behind const finalizedBlock = await this.client.block.finalized(); return { From ed29f6ff59655ec048841f991b5ca7419f79adbc Mon Sep 17 00:00:00 2001 From: "Thang X. Vu" Date: Thu, 5 Feb 2026 10:43:04 +0700 Subject: [PATCH 3/3] fix --- packages/api/src/json-rpc/group/ChainHead/ChainHead.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts index 2ad08bb5..a26fa993 100644 --- a/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts +++ b/packages/api/src/json-rpc/group/ChainHead/ChainHead.ts @@ -339,6 +339,7 @@ export class ChainHead extends JsonRpcGroup { if (!this.#bestHash || (this.#bestHash && !this.findBlock(this.#bestHash))) { this.#bestHash = this.#finalizedHash; + this.#lastBestBlockNumber = undefined; // Reset to avoid stale gap detection after recovery } await this.#updateBlockNumbersAndParents(finalizedBlockHashes, prevPinnedBlocks);