@ercworldio/blockchain-shared 1.0.3-dev.3-PROJ-1296.0 → 1.0.3-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -21,9 +21,9 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
21
21
|
*/
|
|
22
22
|
createSweepJob(userId: number, blockchain: string, chainId: string, address: string, parentIndex: number, childIndex: number, token: string, decimals: number, balance: bigint): Promise<SweepJob>;
|
|
23
23
|
markBatchComplete(sweepResults: SweepResult[]): Promise<void>;
|
|
24
|
-
findAndLockQueuedBatchJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number): Promise<SweepJob[]>;
|
|
25
|
-
findAndLockQueuedJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number): Promise<SweepJob[]>;
|
|
26
|
-
findAndLockPendingJobs(blockchain: BlockchainType, lock_owner: string, lock_interval_mins?: number, limit?: number): Promise<SweepJob[]>;
|
|
24
|
+
findAndLockQueuedBatchJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number, max_retries?: number): Promise<SweepJob[]>;
|
|
25
|
+
findAndLockQueuedJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number, max_retries?: number): Promise<SweepJob[]>;
|
|
26
|
+
findAndLockPendingJobs(blockchain: BlockchainType, lock_owner: string, lock_interval_mins?: number, limit?: number, max_retries?: number): Promise<SweepJob[]>;
|
|
27
27
|
createSweepJobDeprec(userId: number, blockchain: string, chainId: string, address: string, parentIndex: number, childIndex: number, token: string, decimals: number, balance: bigint): Promise<SweepJob>;
|
|
28
28
|
dispatchAddSweepJobWithBalanceCheck(wallet_id: number, blockchain: BlockchainType, user_id: number, address: string, parentIndex: number, childIndex: number, is_full_sweep: boolean): Promise<void>;
|
|
29
29
|
batchCreateSweepJob(user_id: number, address: string, parent_index: number, child_index: number, need_sweep: DepositWalletBalance[]): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SweepJobService.d.ts","sourceRoot":"","sources":["../../src/services/SweepJobService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/E,cAAM,eAAe;IACjB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAS;gBACX,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO;IAMlD,OAAO,CAAC,OAAO;IAOT,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAK,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAgCjI;;;;;OAKG;IAEG,cAAc,CAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;IA8Dd,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE7D,0BAA0B,CAC5B,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,MAAM,YAAM,EACnB,UAAU,EAAE,MAAM,EAClB,wBAAwB,GAAE,MAAW,
|
|
1
|
+
{"version":3,"file":"SweepJobService.d.ts","sourceRoot":"","sources":["../../src/services/SweepJobService.ts"],"names":[],"mappings":"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"}
|
|
@@ -222,8 +222,9 @@ class SweepJobService {
|
|
|
222
222
|
const repo = this.getRepo();
|
|
223
223
|
yield repo.query(`
|
|
224
224
|
UPDATE usersmanagement.sweep_jobs
|
|
225
|
-
SET
|
|
225
|
+
SET
|
|
226
226
|
job_status = $1,
|
|
227
|
+
retry_count = retry_count + 1,
|
|
227
228
|
updated_at = now()
|
|
228
229
|
WHERE id = ANY($2::bigint[])
|
|
229
230
|
`, [
|
|
@@ -241,6 +242,7 @@ class SweepJobService {
|
|
|
241
242
|
SET
|
|
242
243
|
job_status = $1,
|
|
243
244
|
error_message = data.error_message,
|
|
245
|
+
retry_count = j.retry_count + 1,
|
|
244
246
|
updated_at = now()
|
|
245
247
|
FROM (
|
|
246
248
|
SELECT
|
|
@@ -459,7 +461,7 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
459
461
|
}
|
|
460
462
|
// Get batch of jobs for low priority sweeps (midnight worker)
|
|
461
463
|
findAndLockQueuedBatchJobs(blockchain_1) {
|
|
462
|
-
return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 30) {
|
|
464
|
+
return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 30, max_retries = 5) {
|
|
463
465
|
const repo = this.getRepo();
|
|
464
466
|
const rows = yield repo.query(`
|
|
465
467
|
WITH locked AS (
|
|
@@ -468,6 +470,7 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
468
470
|
WHERE job_status = 'queued'
|
|
469
471
|
AND blockchain = $1
|
|
470
472
|
AND sweep_before IS NULL
|
|
473
|
+
AND retry_count < $5
|
|
471
474
|
AND (locked_at IS NULL OR lock_expires_at < now())
|
|
472
475
|
ORDER BY created_at ASC
|
|
473
476
|
LIMIT $2
|
|
@@ -482,13 +485,13 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
482
485
|
FROM locked
|
|
483
486
|
WHERE j.id = locked.id
|
|
484
487
|
RETURNING j.*;
|
|
485
|
-
`, [blockchain, limit, lock_owner, lock_expiry_duration_min]);
|
|
488
|
+
`, [blockchain, limit, lock_owner, lock_expiry_duration_min, max_retries]);
|
|
486
489
|
return rows[0];
|
|
487
490
|
});
|
|
488
491
|
}
|
|
489
492
|
// Pull jobs ready for transfer by sweep worker
|
|
490
493
|
findAndLockQueuedJobs(blockchain_1) {
|
|
491
|
-
return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 5) {
|
|
494
|
+
return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 5, max_retries = 5) {
|
|
492
495
|
const repo = this.getRepo();
|
|
493
496
|
const rows = yield repo.query(`
|
|
494
497
|
WITH locked AS (
|
|
@@ -497,6 +500,7 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
497
500
|
WHERE job_status = 'queued'
|
|
498
501
|
AND blockchain = $1
|
|
499
502
|
AND sweep_before <= now()
|
|
503
|
+
AND retry_count < $5
|
|
500
504
|
AND (locked_at IS NULL OR lock_expires_at < now())
|
|
501
505
|
ORDER BY sweep_before ASC
|
|
502
506
|
LIMIT $2
|
|
@@ -510,13 +514,13 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
510
514
|
FROM locked
|
|
511
515
|
WHERE j.id = locked.id
|
|
512
516
|
RETURNING j.*;
|
|
513
|
-
`, [blockchain, limit, lock_owner, lock_expiry_duration_min]);
|
|
517
|
+
`, [blockchain, limit, lock_owner, lock_expiry_duration_min, max_retries]);
|
|
514
518
|
return rows[0];
|
|
515
519
|
});
|
|
516
520
|
}
|
|
517
521
|
// Pull jobs to ensure enough gas cost by funding worker
|
|
518
522
|
findAndLockPendingJobs(blockchain_1, lock_owner_1) {
|
|
519
|
-
return __awaiter(this, arguments, void 0, function* (blockchain, lock_owner, lock_interval_mins = 5, limit = 100) {
|
|
523
|
+
return __awaiter(this, arguments, void 0, function* (blockchain, lock_owner, lock_interval_mins = 5, limit = 100, max_retries = 5) {
|
|
520
524
|
const repo = this.getRepo();
|
|
521
525
|
const rows = yield repo.query(`
|
|
522
526
|
WITH locked AS (
|
|
@@ -524,6 +528,7 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
524
528
|
FROM usersmanagement.sweep_jobs
|
|
525
529
|
WHERE job_status = 'pending'
|
|
526
530
|
AND blockchain = $1
|
|
531
|
+
AND retry_count < $5
|
|
527
532
|
AND (locked_at IS NULL OR lock_expires_at < now())
|
|
528
533
|
ORDER BY created_at
|
|
529
534
|
LIMIT $2
|
|
@@ -536,7 +541,7 @@ WHERE job_status IN ('pending', 'queued');
|
|
|
536
541
|
FROM locked
|
|
537
542
|
WHERE j.id = locked.id
|
|
538
543
|
RETURNING j.*;
|
|
539
|
-
`, [blockchain, limit, lock_owner, lock_interval_mins]);
|
|
544
|
+
`, [blockchain, limit, lock_owner, lock_interval_mins, max_retries]);
|
|
540
545
|
return rows[0];
|
|
541
546
|
});
|
|
542
547
|
}
|