diff --git a/src/service/mainnet/index.ts b/src/service/mainnet/index.ts index 29e991b..6c270bd 100644 --- a/src/service/mainnet/index.ts +++ b/src/service/mainnet/index.ts @@ -131,26 +131,38 @@ export class MainnetService { } async submitTxsDynamic(results: Array<{ encodedRLP: string; blockNum: number }>): Promise { - const blocksPerTx = [30, 15, 5, 1]; + const blocksPerTx = [20, 10, 5, 1]; //make 1 initial try, this is for when blocks are caught up if (results.length < blocksPerTx[0]){ + try{ this.logger.info("submitDynamic startblock", results[0].blockNum, "pushing", results.length, "blocks,",results.length, "remaining(inclusive) into PARENTNET"); await this.submitTxs(results); return; + } catch (error){} } + let errorCount = 0; //loop while reducing tx size while (results.length) { let i = 0; while (i < blocksPerTx.length){ const val = blocksPerTx[i]; if (results.length >= val){ + try{ this.logger.info("submitDynamic startblock", results[0].blockNum, "pushing", val, "blocks,",results.length, "remaining(inclusive) into PARENTNET"); await this.submitTxs(results.slice(0, val)); results = results.slice(val, results.length); break; //if push success, reset push size + } catch (error){ + errorCount++; + if (errorCount > 10){ + throw Error("submitDynamic failed 10X times, reset relayer process"); + } + } + } + if (i < blocksPerTx.length - 1){ + i++; } - i++; await sleep(3000); } } diff --git a/src/service/subnet/index.ts b/src/service/subnet/index.ts index ef9b36e..0c383e8 100644 --- a/src/service/subnet/index.ts +++ b/src/service/subnet/index.ts @@ -306,21 +306,34 @@ export class SubnetService { const blocksPerTx = [20, 10, 5, 1]; //make 1 initial try, this is for when blocks are caught up if (results.length < blocksPerTx[0]){ + try{ this.logger.info("submitDynamic startblock", results[0].blockNum, "pushing", results.length, "blocks,",results.length, "remaining(inclusive) into SUBNET"); await this.submitTxs(results); return; + } catch (error){} } + + let errorCount = 0; while (results.length) { let i = 0; while (i < blocksPerTx.length){ const val = blocksPerTx[i]; if (results.length >= val){ + try{ this.logger.info("submitDynamic startblock", results[0].blockNum, "pushing", val, "blocks,", results.length, "remaining(inclusive) into SUBNET"); await this.submitTxs(results.slice(0, val)); results = results.slice(val, results.length); break; //if push success, reset push size + } catch (error){ + errorCount++; + if (errorCount > 10){ + throw Error("submitDynamic failed 10X times, reset relayer process"); + } + } + } + if (i < blocksPerTx.length-1){ + i++; } - i++; await sleep(3000); } }