From dfa2f1eed63e989e38df322f1ec80dded951bd15 Mon Sep 17 00:00:00 2001 From: classicalliu Date: Thu, 26 Sep 2019 16:30:42 +0800 Subject: [PATCH] fix: sync stopped in indexer and normal mode --- .../neuron-wallet/src/services/indexer/queue.ts | 2 ++ .../src/services/sync/check-and-save/index.ts | 13 +++++++------ .../neuron-wallet/src/services/sync/get-blocks.ts | 9 ++++++--- .../src/services/tx/transaction-persistor.ts | 2 ++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/neuron-wallet/src/services/indexer/queue.ts b/packages/neuron-wallet/src/services/indexer/queue.ts index bd5600050a..df54cc694e 100644 --- a/packages/neuron-wallet/src/services/indexer/queue.ts +++ b/packages/neuron-wallet/src/services/indexer/queue.ts @@ -177,6 +177,8 @@ export default class IndexerQueue { txPoint && (BigInt(txPoint.blockNumber) >= startBlockNumber || this.tipBlockNumber - BigInt(txPoint.blockNumber) < 1000) ) { + logger.debug('indexer fetched tx:', type, txPoint.txHash) + const transactionWithStatus = await this.getBlocksService.getTransaction(txPoint.txHash) const ckbTransaction: CKBComponents.Transaction = transactionWithStatus.transaction const transaction: Transaction = TypeConvert.toTransaction(ckbTransaction) diff --git a/packages/neuron-wallet/src/services/sync/check-and-save/index.ts b/packages/neuron-wallet/src/services/sync/check-and-save/index.ts index 610b496985..ed8c495b4c 100644 --- a/packages/neuron-wallet/src/services/sync/check-and-save/index.ts +++ b/packages/neuron-wallet/src/services/sync/check-and-save/index.ts @@ -12,11 +12,12 @@ export default class CheckAndSave { public process = async (): Promise => { const txs = this.block.transactions - return Promise.all( - txs.map(async tx => { - const checkTx = new CheckTx(tx) - return checkTx.checkAndSave(this.lockHashes) - }) - ) + let result: boolean[] = [] + for (const tx of txs) { + const checkTx = new CheckTx(tx) + const checkResult = await checkTx.checkAndSave(this.lockHashes) + result.push(checkResult) + } + return result } } diff --git a/packages/neuron-wallet/src/services/sync/get-blocks.ts b/packages/neuron-wallet/src/services/sync/get-blocks.ts index 69ba035581..a7b47a8606 100644 --- a/packages/neuron-wallet/src/services/sync/get-blocks.ts +++ b/packages/neuron-wallet/src/services/sync/get-blocks.ts @@ -34,10 +34,13 @@ export default class GetBlocks { } public checkAndSave = async (blocks: Block[], lockHashes: string[]) => { - return Utils.mapSeries(blocks, async (block: Block) => { + let checkResult: boolean[][] = [] + for (const block of blocks) { const checkAndSave = new CheckAndSave(block, lockHashes) - return checkAndSave.process() - }) + const result = await checkAndSave.process() + checkResult.push(result) + } + return checkResult } public retryGetBlock = async (num: string): Promise => { diff --git a/packages/neuron-wallet/src/services/tx/transaction-persistor.ts b/packages/neuron-wallet/src/services/tx/transaction-persistor.ts index c5ad01c650..504bb92cef 100644 --- a/packages/neuron-wallet/src/services/tx/transaction-persistor.ts +++ b/packages/neuron-wallet/src/services/tx/transaction-persistor.ts @@ -179,6 +179,8 @@ export class TransactionPersistor { } finally { await queryRunner.release() } + tx.inputs = inputs + tx.outputs = outputs return tx }