From 2f12cb8fc2a01769a9954587179492eb881953f0 Mon Sep 17 00:00:00 2001 From: Bourdelas Pablo Date: Tue, 6 Dec 2022 14:22:57 +0100 Subject: [PATCH] feat: add manager error as retryable --- .../src/TezosBlockchainDriver.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/cast/blockchain-driver-tz/src/TezosBlockchainDriver.ts b/packages/cast/blockchain-driver-tz/src/TezosBlockchainDriver.ts index ea01317..d88379d 100644 --- a/packages/cast/blockchain-driver-tz/src/TezosBlockchainDriver.ts +++ b/packages/cast/blockchain-driver-tz/src/TezosBlockchainDriver.ts @@ -85,6 +85,10 @@ export class TezosBlockchainDriver '.tx_rollup_operation_counter_mismatch', '.tx_rollup_unknown_address_index', ]; + private static MANAGER_ERRORS = [ + '.prefilter.manager_restriction', + 'operation.manager_restriction', + ]; private static CONNECTION_ERRORS = []; private static HTTP_ERRORS_CODE: STATUS_CODE[] = [ 504, 500, 507, 508, 408, 503, 429, @@ -695,10 +699,21 @@ export class TezosBlockchainDriver // temporary seem pretty 'retryable'like return ( error instanceof Error && - (this.isNonceIssue(error) || this.isConnectionIssue(error)) + (this.isNonceIssue(error) || this.isConnectionIssue(error) || this.isManagerIssue(error)) ); } + private isManagerIssue(error: Error): boolean{ + if (error instanceof TezosOperationError) { + const tezosErrorId = error.id; + + return TezosBlockchainDriver.MANAGER_ERRORS.some((id) => + tezosErrorId.includes(id), + ); + } + return false; + } + private isNonceIssue(error: Error): boolean { if (error instanceof TezosOperationError) { const tezosErrorId = error.id;