diff --git a/config/chains.json b/config/chains.json index 4cb941d..9154627 100644 --- a/config/chains.json +++ b/config/chains.json @@ -9,6 +9,6 @@ "id": 42161, "key": "0x0d6b3b1402f72b204f93e1438fbad4713a838b21c13c16f50ff54c32a8917273", "wallet": "0x3Cd052Cc25358DB844bcDDfFa514080d41a4c2cA", - "mail": "ztgame@gmail.com" + "mail": "ztgame@gmail.com,yincan.kg@gmail.com" } ] diff --git a/src/chain/allchain.ts b/src/chain/allchain.ts index 7b6bc5f..3ce5e27 100644 --- a/src/chain/allchain.ts +++ b/src/chain/allchain.ts @@ -210,7 +210,7 @@ export const AllChains = [ { name: 'Arbitrum One', type: 'Mainnet', - rpc: 'https://arb-mainnet.g.alchemy.com/v2/tFPlLg-MT8uGkM5wKHyoBqEHWJJ0o3Nt', + rpc: 'https://arb-mainnet.g.alchemy.com/v2/tFPlLg-MT8uGkM5wKHyoBqEHWJJ0o3Nt|https://rpc.arb1.arbitrum.gateway.fm', id: 42161, network: 'ARBITRUM', symbol: 'ETH', diff --git a/src/manual.ts b/src/manual.ts new file mode 100644 index 0000000..5ae2227 --- /dev/null +++ b/src/manual.ts @@ -0,0 +1,12 @@ +import { assert } from 'console' +import * as dotenv from 'dotenv' +import { TaskSvr } from 'service/task.service' +const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development' +dotenv.config({ path: envFile }) +require('common/Extend') +;(async () => { + let scheduleId = process.env.npm_config_id + assert(scheduleId, 'scheduleId is required') + await new TaskSvr().parseOneSchedule(scheduleId) + console.log(`begin schedule:: scheduleId: ${scheduleId}`) +})() diff --git a/src/queue/exec.queue.ts b/src/queue/exec.queue.ts index aaae173..f92d836 100644 --- a/src/queue/exec.queue.ts +++ b/src/queue/exec.queue.ts @@ -24,17 +24,17 @@ export class ExecQueue { this.blockChain = new BlockChain() } - public async addTaskToQueue(subTask: DocumentType) { - if (EXCLUDE_STATUS.indexOf(subTask.status) >= 0) { + public async addTaskToQueue(subTask: DocumentType, force = false) { + if (!force && EXCLUDE_STATUS.indexOf(subTask.status) >= 0) { return } - if (subTask.maxTryCount && subTask.execCount > subTask.maxTryCount) { + if (!force && subTask.maxTryCount && subTask.execCount > subTask.maxTryCount) { subTask.status = ReqTaskStatus.ERROR await subTask.save() await ChainTask.checkStatus(subTask.chainTaskId) return } - if (subTask.status === ReqTaskStatus.WAIT_EXEC_CONFIRM) { + if (!force && subTask.status === ReqTaskStatus.WAIT_EXEC_CONFIRM) { new ChainCache().getConfirmQueue(subTask.chain).addTaskToQueue(subTask) return } diff --git a/src/service/task.service.ts b/src/service/task.service.ts index 17ccf21..a4873ac 100644 --- a/src/service/task.service.ts +++ b/src/service/task.service.ts @@ -22,7 +22,7 @@ export class TaskSvr { } } - public async parseOneSchedule(scheduleId: string) { + public async parseOneSchedule(scheduleId: string, force = false) { let record = await RequestTask.findOne({ scheduleId }) if (!record) { return @@ -32,7 +32,7 @@ export class TaskSvr { return } await record.save() - new ExecQueue().addTaskToQueue(record) + new ExecQueue().addTaskToQueue(record, force) } public async sendResultNotify(task: DocumentType, desc: string) {