diff --git a/apps/canonical-bridge-server/src/common/utils/index.ts b/apps/canonical-bridge-server/src/common/utils/index.ts new file mode 100644 index 00000000..b08a0968 --- /dev/null +++ b/apps/canonical-bridge-server/src/common/utils/index.ts @@ -0,0 +1,7 @@ +export async function sleep(duration = 1000) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(null); + }, duration); + }); +} diff --git a/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts b/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts index 49144426..b906f1f3 100644 --- a/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts +++ b/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts @@ -19,6 +19,7 @@ import { EVM_NATIVE_TOKEN_ADDRESS, } from '@bnb-chain/canonical-bridge-sdk'; import { UtilService } from '@/shared/util/util.service'; +import { sleep } from '@/common/utils'; @Processor(Queues.SyncBridge) export class BridgeProcessor extends WorkerHost { @@ -60,11 +61,16 @@ export class BridgeProcessor extends WorkerHost { if (!config) return; const tokenMap: Record = {}; + const preConfig = await this.cache.get(`${CACHE_KEY.DEBRIDGE_CONFIG}`); for (const chain of config.chains) { + // Prevent failure by sending too many requests in a short time + await sleep(2000); const data = await this.web3Service.getDebridgeChainTokens(chain.chainId); if (data) { tokenMap[chain.chainId] = Object.values(data.tokens); + } else { + tokenMap[chain.chainId] = preConfig?.tokens?.[chain.chainId]; // use old data } }