@rotorsoft/act-pg 1.15.0 → 1.16.1
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/postgres-store.d.ts.map +1 -1
- package/dist/index.cjs +12 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -27
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -852,36 +852,19 @@ var PostgresStore = class {
|
|
|
852
852
|
await client.query(
|
|
853
853
|
`
|
|
854
854
|
UPDATE ${this._fqs} t
|
|
855
|
-
SET priority = COALESCE((s->>'priority')::int, 0)
|
|
855
|
+
SET priority = GREATEST(t.priority, COALESCE((s->>'priority')::int, 0)),
|
|
856
|
+
lane = COALESCE(s->>'lane', 'default'),
|
|
857
|
+
correlated_at = GREATEST(t.correlated_at, (s->>'correlated_at')::int)
|
|
856
858
|
FROM jsonb_array_elements($1::jsonb) AS s
|
|
857
859
|
WHERE t.stream = s->>'stream'
|
|
858
|
-
AND COALESCE((s->>'priority')::int, 0) > t.priority
|
|
860
|
+
AND (COALESCE((s->>'priority')::int, 0) > t.priority
|
|
861
|
+
OR t.lane <> COALESCE(s->>'lane', 'default')
|
|
862
|
+
OR (s->>'correlated_at' IS NOT NULL
|
|
863
|
+
AND (t.correlated_at IS NULL
|
|
864
|
+
OR t.correlated_at < (s->>'correlated_at')::int)))
|
|
859
865
|
`,
|
|
860
866
|
[JSON.stringify(streams)]
|
|
861
867
|
);
|
|
862
|
-
await client.query(
|
|
863
|
-
`
|
|
864
|
-
UPDATE ${this._fqs} t
|
|
865
|
-
SET lane = COALESCE(s->>'lane', 'default')
|
|
866
|
-
FROM jsonb_array_elements($1::jsonb) AS s
|
|
867
|
-
WHERE t.stream = s->>'stream'
|
|
868
|
-
AND t.lane <> COALESCE(s->>'lane', 'default')
|
|
869
|
-
`,
|
|
870
|
-
[JSON.stringify(streams)]
|
|
871
|
-
);
|
|
872
|
-
if (streams.some((s) => s.correlated_at !== void 0))
|
|
873
|
-
await client.query(
|
|
874
|
-
`
|
|
875
|
-
UPDATE ${this._fqs} t
|
|
876
|
-
SET correlated_at = (s->>'correlated_at')::int
|
|
877
|
-
FROM jsonb_array_elements($1::jsonb) AS s
|
|
878
|
-
WHERE t.stream = s->>'stream'
|
|
879
|
-
AND s->>'correlated_at' IS NOT NULL
|
|
880
|
-
AND (t.correlated_at IS NULL
|
|
881
|
-
OR t.correlated_at < (s->>'correlated_at')::int)
|
|
882
|
-
`,
|
|
883
|
-
[JSON.stringify(streams)]
|
|
884
|
-
);
|
|
885
868
|
}
|
|
886
869
|
if (correlated_at !== void 0)
|
|
887
870
|
await client.query(
|
|
@@ -1187,7 +1170,7 @@ var PostgresStore = class {
|
|
|
1187
1170
|
values.push(query.after);
|
|
1188
1171
|
conditions.push(`stream > $${values.length}`);
|
|
1189
1172
|
}
|
|
1190
|
-
let sql = `SELECT stream, source, at, retry, blocked, error, leased_by, leased_until, priority, lane, deferred_at FROM ${this._fqs}`;
|
|
1173
|
+
let sql = `SELECT stream, source, at, retry, blocked, error, leased_by, leased_until, priority, lane, deferred_at, correlated_at FROM ${this._fqs}`;
|
|
1191
1174
|
if (conditions.length) sql += " WHERE " + conditions.join(" AND ");
|
|
1192
1175
|
values.push(limit);
|
|
1193
1176
|
sql += ` ORDER BY stream LIMIT $${values.length}`;
|
|
@@ -1214,7 +1197,9 @@ var PostgresStore = class {
|
|
|
1214
1197
|
lane: row.lane,
|
|
1215
1198
|
// Persisted as timestamptz; surface as ms since epoch (#1221) so
|
|
1216
1199
|
// the cold-start re-seed can re-arm the drain at the due-time.
|
|
1217
|
-
deferred_at: row.deferred_at ? row.deferred_at.getTime() : void 0
|
|
1200
|
+
deferred_at: row.deferred_at ? row.deferred_at.getTime() : void 0,
|
|
1201
|
+
// NULL means "no mark yet" — unknown, not "no work" (#1485).
|
|
1202
|
+
correlated_at: row.correlated_at ?? void 0
|
|
1218
1203
|
});
|
|
1219
1204
|
count++;
|
|
1220
1205
|
}
|