From 3ed6b8f5c40c40cb3026f93566d088742824ee7c Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 24 Nov 2023 16:18:43 -0500 Subject: [PATCH] bug --- src/services/bitcoin-rpc.service.ts | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/services/bitcoin-rpc.service.ts b/src/services/bitcoin-rpc.service.ts index 557c410..38c9574 100644 --- a/src/services/bitcoin-rpc.service.ts +++ b/src/services/bitcoin-rpc.service.ts @@ -77,21 +77,22 @@ export class BitcoinRpcService { if (block != null && block.data != null) { return Promise.resolve(JSON.parse(block.data)); } else if (block == null) { - const { lockedBy } = await this.rpcBlockService.lockBlock(blockHeight, process.env.NODE_APP_INSTANCE); - - if (lockedBy != process.env.NODE_APP_INSTANCE) { + // There is a unique constraint on the block height so if another process tries to lock, it'll throw + try { + await this.rpcBlockService.lockBlock(blockHeight, process.env.NODE_APP_INSTANCE); + } catch (e) { result = await this.waitForBlock(blockHeight); - } else { - - result = await this.client.getblocktemplate({ - template_request: { - rules: ['segwit'], - mode: 'template', - capabilities: ['serverlist', 'proposal'] - } - }); - await this.rpcBlockService.saveBlock(blockHeight, JSON.stringify(result)); } + + result = await this.client.getblocktemplate({ + template_request: { + rules: ['segwit'], + mode: 'template', + capabilities: ['serverlist', 'proposal'] + } + }); + await this.rpcBlockService.saveBlock(blockHeight, JSON.stringify(result)); + } else { //wait for block result = await this.waitForBlock(blockHeight);