@ercworldio/blockchain-shared 1.0.3-dev.3-PROJ-1296.31 → 1.0.3-dev.3-PROJ-1296.33
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.
|
@@ -12,7 +12,8 @@ declare class ClaimJobsService {
|
|
|
12
12
|
private get_repo;
|
|
13
13
|
private get_history_repo;
|
|
14
14
|
private paginate;
|
|
15
|
-
|
|
15
|
+
get_available_jobs_no_timelock: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobs[]>;
|
|
16
|
+
get_available_jobs_with_timelock: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobs[]>;
|
|
16
17
|
requeue_expired_jobs: (current_status: JobStatus, ttl_seconds: number, limit: number, lock_owner: string, lock_reason: string, max_retries: number) => Promise<ClaimJobs[]>;
|
|
17
18
|
get_stale_jobs: (status: JobStatus, stale_time_mins: number, ttl_mins: number, lock_owner: string, lock_reason: string, limit?: number) => Promise<ClaimJobs[]>;
|
|
18
19
|
get_stale_jobs_deprecated: (status: JobStatus, stale_time_mins: number, limit?: number) => Promise<ClaimJobs[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimJobService.d.ts","sourceRoot":"","sources":["../../src/services/ClaimJobService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI7I,cAAM,gBAAgB;IAClB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAGV,MAAM,EAAE,aAAa;IAMjC,OAAO,CAAC,QAAQ,CAIf;IAED,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,QAAQ,CAsBf;IAEM,
|
|
1
|
+
{"version":3,"file":"ClaimJobService.d.ts","sourceRoot":"","sources":["../../src/services/ClaimJobService.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,40 +55,78 @@ class ClaimJobsService {
|
|
|
55
55
|
items: items || []
|
|
56
56
|
};
|
|
57
57
|
});
|
|
58
|
-
this.
|
|
58
|
+
this.get_available_jobs_no_timelock = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
|
|
59
59
|
const repo = this.get_repo();
|
|
60
|
-
const ttlSeconds = job_ttl_s;
|
|
61
|
-
const batchGroupId = (0, uuid_1.v4)();
|
|
62
60
|
const rows = yield repo.query(`
|
|
63
61
|
WITH candidates AS (
|
|
64
62
|
SELECT id
|
|
65
63
|
FROM accounting.claim_jobs
|
|
66
64
|
WHERE job_status = 'queued'
|
|
65
|
+
AND has_timelock = false
|
|
67
66
|
AND (lock_expires_at IS NULL OR lock_expires_at < now())
|
|
67
|
+
AND retry_count < $6
|
|
68
68
|
ORDER BY blockchain, chain_id ASC
|
|
69
69
|
LIMIT $1
|
|
70
70
|
FOR UPDATE SKIP LOCKED
|
|
71
71
|
)
|
|
72
72
|
UPDATE accounting.claim_jobs cj
|
|
73
73
|
SET
|
|
74
|
-
job_status
|
|
75
|
-
locked_at
|
|
74
|
+
job_status = 'processing',
|
|
75
|
+
locked_at = now(),
|
|
76
76
|
lock_expires_at = now() + ($2 || ' seconds')::interval,
|
|
77
|
-
batch_group_id
|
|
77
|
+
batch_group_id = $3,
|
|
78
78
|
metadata = jsonb_set(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
to_jsonb($5::text)
|
|
86
|
-
),
|
|
79
|
+
jsonb_set(
|
|
80
|
+
coalesce(cj.metadata, '{}'::jsonb),
|
|
81
|
+
'{lock_owner}', to_jsonb($4::text)
|
|
82
|
+
),
|
|
83
|
+
'{lock_reason}', to_jsonb($5::text)
|
|
84
|
+
),
|
|
87
85
|
updated_at = now()
|
|
88
86
|
FROM candidates c
|
|
89
87
|
WHERE cj.id = c.id
|
|
90
88
|
RETURNING cj.*;
|
|
91
|
-
`, [limit,
|
|
89
|
+
`, [limit, job_ttl_s, (0, uuid_1.v4)(), lock_metadata.lock_owner, lock_metadata.lock_reason, max_retry_count]);
|
|
90
|
+
return rows[0];
|
|
91
|
+
});
|
|
92
|
+
this.get_available_jobs_with_timelock = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
|
|
93
|
+
const repo = this.get_repo();
|
|
94
|
+
const rows = yield repo.query(`
|
|
95
|
+
WITH scheduled_status AS (
|
|
96
|
+
SELECT id FROM multisig.crypto_commitment_statuses WHERE status = 'scheduled'
|
|
97
|
+
),
|
|
98
|
+
candidates AS (
|
|
99
|
+
SELECT cj.id
|
|
100
|
+
FROM accounting.claim_jobs cj
|
|
101
|
+
JOIN multisig.crypto_withdrawal_commitment cwc ON cwc.request_id = cj.request_id
|
|
102
|
+
JOIN scheduled_status ss ON cwc.status_id = ss.id
|
|
103
|
+
WHERE cj.job_status = 'queued'
|
|
104
|
+
AND cj.has_timelock = true
|
|
105
|
+
AND (cj.lock_expires_at IS NULL OR cj.lock_expires_at < now())
|
|
106
|
+
AND cj.retry_count < $6
|
|
107
|
+
AND cwc.execute_at < now()
|
|
108
|
+
ORDER BY cj.blockchain, cj.chain_id ASC
|
|
109
|
+
LIMIT $1
|
|
110
|
+
FOR UPDATE SKIP LOCKED
|
|
111
|
+
)
|
|
112
|
+
UPDATE accounting.claim_jobs cj
|
|
113
|
+
SET
|
|
114
|
+
job_status = 'processing',
|
|
115
|
+
locked_at = now(),
|
|
116
|
+
lock_expires_at = now() + ($2 || ' seconds')::interval,
|
|
117
|
+
batch_group_id = $3,
|
|
118
|
+
metadata = jsonb_set(
|
|
119
|
+
jsonb_set(
|
|
120
|
+
coalesce(cj.metadata, '{}'::jsonb),
|
|
121
|
+
'{lock_owner}', to_jsonb($4::text)
|
|
122
|
+
),
|
|
123
|
+
'{lock_reason}', to_jsonb($5::text)
|
|
124
|
+
),
|
|
125
|
+
updated_at = now()
|
|
126
|
+
FROM candidates c
|
|
127
|
+
WHERE cj.id = c.id
|
|
128
|
+
RETURNING cj.*;
|
|
129
|
+
`, [limit, job_ttl_s, (0, uuid_1.v4)(), lock_metadata.lock_owner, lock_metadata.lock_reason, max_retry_count]);
|
|
92
130
|
return rows[0];
|
|
93
131
|
});
|
|
94
132
|
this.requeue_expired_jobs = (current_status, ttl_seconds, limit, lock_owner, lock_reason, max_retries) => __awaiter(this, void 0, void 0, function* () {
|
package/package.json
CHANGED