solid-objects 0.14.5 → 0.14.7
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/CHANGELOG.md +38 -0
- package/README.md +4 -0
- package/dist/actor-runtime.d.ts +36 -0
- package/dist/actor-runtime.d.ts.map +1 -0
- package/dist/actor-runtime.js +2 -0
- package/dist/actor-runtime.js.map +1 -0
- package/dist/application-database.d.ts.map +1 -1
- package/dist/application-database.js +2 -2
- package/dist/application-database.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/cloudflare/configuration.d.ts +32 -0
- package/dist/cloudflare/configuration.d.ts.map +1 -0
- package/dist/cloudflare/configuration.js +46 -0
- package/dist/cloudflare/configuration.js.map +1 -0
- package/dist/cloudflare/engine.d.ts +43 -0
- package/dist/cloudflare/engine.d.ts.map +1 -0
- package/dist/cloudflare/engine.js +921 -0
- package/dist/cloudflare/engine.js.map +1 -0
- package/dist/cloudflare/host.d.ts +10 -0
- package/dist/cloudflare/host.d.ts.map +1 -0
- package/dist/cloudflare/host.js +44 -0
- package/dist/cloudflare/host.js.map +1 -0
- package/dist/cloudflare/index.d.ts +9 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +8 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/platform.d.ts +2 -0
- package/dist/cloudflare/platform.d.ts.map +1 -0
- package/dist/cloudflare/platform.js +4 -0
- package/dist/cloudflare/platform.js.map +1 -0
- package/dist/cloudflare/protocol.d.ts +58 -0
- package/dist/cloudflare/protocol.d.ts.map +1 -0
- package/dist/cloudflare/protocol.js +77 -0
- package/dist/cloudflare/protocol.js.map +1 -0
- package/dist/cloudflare/records.d.ts +71 -0
- package/dist/cloudflare/records.d.ts.map +1 -0
- package/dist/cloudflare/records.js +2 -0
- package/dist/cloudflare/records.js.map +1 -0
- package/dist/cloudflare/runtime.d.ts +83 -0
- package/dist/cloudflare/runtime.d.ts.map +1 -0
- package/dist/cloudflare/runtime.js +321 -0
- package/dist/cloudflare/runtime.js.map +1 -0
- package/dist/cloudflare/session.d.ts +12 -0
- package/dist/cloudflare/session.d.ts.map +1 -0
- package/dist/cloudflare/session.js +332 -0
- package/dist/cloudflare/session.js.map +1 -0
- package/dist/cloudflare/storage.d.ts +25 -0
- package/dist/cloudflare/storage.d.ts.map +1 -0
- package/dist/cloudflare/storage.js +195 -0
- package/dist/cloudflare/storage.js.map +1 -0
- package/dist/context.d.ts +5 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/core.d.ts +8 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +4 -0
- package/dist/core.js.map +1 -0
- package/dist/database/mysql.d.ts +2 -2
- package/dist/database/mysql.d.ts.map +1 -1
- package/dist/database/mysql.js +4 -1
- package/dist/database/mysql.js.map +1 -1
- package/dist/database/postgresql.d.ts +2 -2
- package/dist/database/postgresql.d.ts.map +1 -1
- package/dist/database/postgresql.js +4 -2
- package/dist/database/postgresql.js.map +1 -1
- package/dist/database/types.d.ts +4 -1
- package/dist/database/types.d.ts.map +1 -1
- package/dist/default-runtime.d.ts +4 -4
- package/dist/default-runtime.d.ts.map +1 -1
- package/dist/default-runtime.js.map +1 -1
- package/dist/doctor.js +2 -2
- package/dist/doctor.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/realtime.d.ts +18 -2
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js.map +1 -1
- package/dist/reference.d.ts +5 -5
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js.map +1 -1
- package/dist/repository.d.ts +15 -1
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +303 -65
- package/dist/repository.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +18 -53
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +29 -5
- package/dist/schema.js.map +1 -1
- package/dist/turn.d.ts +34 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +57 -0
- package/dist/turn.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/api.md +28 -2
- package/docs/architecture.md +5 -3
- package/docs/cloudflare.md +155 -0
- package/docs/parity.md +28 -9
- package/docs/support.md +12 -11
- package/examples/cloudflare/README.md +49 -0
- package/examples/cloudflare/environment.d.ts +14 -0
- package/examples/cloudflare/shopping-cart.ts +65 -0
- package/examples/cloudflare/worker.ts +87 -0
- package/examples/cloudflare/wrangler.jsonc +15 -0
- package/package.json +20 -5
package/dist/reference.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"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"}
|
package/dist/reference.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AA2GrE,MAAM,OAAO,gBAAgB;IACV,OAAO,
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { RuntimeSettings } from "./configuration.js";
|
|
|
3
3
|
import type { DatabaseConnection } from "./database/types.js";
|
|
4
4
|
import type { BroadcastRow, ActivationLease, ClaimedTurn, DeadLetterRow, EffectRow, EnqueueInput, InstanceRow, MessageRow, ProcessRow, ReminderRow } from "./records.js";
|
|
5
5
|
import type { RetentionTarget } from "./retention.js";
|
|
6
|
-
import type { JsonObject, JsonValue } from "./types.js";
|
|
6
|
+
import type { JsonObject, JsonValue, MessageStatus } from "./types.js";
|
|
7
7
|
export interface SyncDiagnosticsRecord {
|
|
8
8
|
message: MessageRow;
|
|
9
9
|
instance: InstanceRow;
|
|
@@ -84,6 +84,10 @@ export declare class Repository {
|
|
|
84
84
|
retryable: boolean;
|
|
85
85
|
}): Promise<"dead" | "retrying">;
|
|
86
86
|
findMessage(id: string): Promise<MessageRow | undefined>;
|
|
87
|
+
messageSnapshot(id: string): Promise<{
|
|
88
|
+
message: MessageRow | undefined;
|
|
89
|
+
status: MessageStatus;
|
|
90
|
+
}>;
|
|
87
91
|
messageStatus(id: string): Promise<"ready" | "claimed" | "completed" | "rejected" | "dead" | "unknown">;
|
|
88
92
|
syncDiagnostics(messageId: string): Promise<SyncDiagnosticsRecord | undefined>;
|
|
89
93
|
listDeadLetters(): Promise<DeadLetterRow[]>;
|
|
@@ -134,14 +138,24 @@ export declare class Repository {
|
|
|
134
138
|
claimReminder(processId: string, options?: {
|
|
135
139
|
nowMilliseconds?: number;
|
|
136
140
|
}): Promise<ReminderRow | undefined>;
|
|
141
|
+
private findAvailableReminder;
|
|
142
|
+
private findStaleReminder;
|
|
143
|
+
private lockReminderCandidate;
|
|
144
|
+
private claimReminderCandidate;
|
|
137
145
|
enqueueReminder(reminder: ReminderRow, options?: {
|
|
138
146
|
nowMilliseconds?: number;
|
|
139
147
|
}): Promise<void>;
|
|
140
148
|
releaseReminder(reminder: ReminderRow): Promise<void>;
|
|
141
149
|
failReminder(reminder: ReminderRow, error: unknown): Promise<void>;
|
|
142
150
|
claimBroadcast(processId: string): Promise<BroadcastRow | undefined>;
|
|
151
|
+
private findPendingBroadcast;
|
|
152
|
+
private findStaleBroadcast;
|
|
153
|
+
private lockBroadcastCandidate;
|
|
154
|
+
private claimBroadcastCandidate;
|
|
143
155
|
completeBroadcast(broadcast: BroadcastRow): Promise<void>;
|
|
144
156
|
failBroadcast(broadcast: BroadcastRow, error: unknown): Promise<void>;
|
|
157
|
+
private claimLockClause;
|
|
158
|
+
private loadActorIdentity;
|
|
145
159
|
private findInstance;
|
|
146
160
|
private recoverExpiredClaims;
|
|
147
161
|
private assertFence;
|
package/dist/repository.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.js
CHANGED
|
@@ -599,6 +599,22 @@ export class Repository {
|
|
|
599
599
|
async findMessage(id) {
|
|
600
600
|
return this.settings.database.connection((connection) => connection.get(`SELECT * FROM ${this.table("messages")} WHERE id = ?`, [id]));
|
|
601
601
|
}
|
|
602
|
+
async messageSnapshot(id) {
|
|
603
|
+
return this.settings.database.connection(async (connection) => {
|
|
604
|
+
const row = await connection.get(`SELECT messages.*, CASE
|
|
605
|
+
WHEN messages.rejection IS NOT NULL THEN 'rejected'
|
|
606
|
+
WHEN EXISTS (SELECT 1 FROM ${this.table("dead_letters")} WHERE message_id = messages.id) THEN 'dead'
|
|
607
|
+
WHEN messages.completed_at_ms IS NOT NULL THEN 'completed'
|
|
608
|
+
WHEN EXISTS (SELECT 1 FROM ${this.table("claimed_messages")} WHERE message_id = messages.id) THEN 'claimed'
|
|
609
|
+
WHEN EXISTS (SELECT 1 FROM ${this.table("ready_messages")} WHERE message_id = messages.id) THEN 'ready'
|
|
610
|
+
ELSE 'unknown' END AS membership_status
|
|
611
|
+
FROM ${this.table("messages")} messages WHERE messages.id = ?`, [id]);
|
|
612
|
+
if (!row)
|
|
613
|
+
return { message: undefined, status: "unknown" };
|
|
614
|
+
const { membership_status: status, ...message } = row;
|
|
615
|
+
return { message, status };
|
|
616
|
+
});
|
|
617
|
+
}
|
|
602
618
|
async messageStatus(id) {
|
|
603
619
|
return this.settings.database.connection(async (connection) => {
|
|
604
620
|
const message = await connection.get(`SELECT * FROM ${this.table("messages")} WHERE id = ?`, [id]);
|
|
@@ -937,31 +953,34 @@ export class Repository {
|
|
|
937
953
|
const now = await connection.nowMilliseconds();
|
|
938
954
|
const staleAt = now - this.settings.processAliveThresholdMilliseconds;
|
|
939
955
|
await connection.run(`UPDATE ${this.table("effects")} SET status = 'pending', claimed_by = NULL
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
const effect = await connection.get(`SELECT effects
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
LIMIT 1`, [now]);
|
|
956
|
+
WHERE status = 'processing' AND (
|
|
957
|
+
claimed_by IS NULL OR NOT EXISTS (
|
|
958
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
959
|
+
WHERE processes.id = ${this.table("effects")}.claimed_by
|
|
960
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
961
|
+
)
|
|
962
|
+
)`, [staleAt]);
|
|
963
|
+
const effect = await connection.get(`SELECT effects.*
|
|
964
|
+
FROM ${this.table("effects")} effects
|
|
965
|
+
WHERE effects.status = 'pending' AND effects.available_at_ms <= ?
|
|
966
|
+
ORDER BY effects.available_at_ms, effects.id
|
|
967
|
+
LIMIT 1${this.claimLockClause()}`, [now]);
|
|
953
968
|
if (!effect)
|
|
954
969
|
return undefined;
|
|
955
970
|
const claimed = await connection.run(`UPDATE ${this.table("effects")}
|
|
956
|
-
|
|
957
|
-
|
|
971
|
+
SET status = 'processing', claimed_by = ?, attempt_count = attempt_count + 1
|
|
972
|
+
WHERE id = ? AND status = 'pending'`, [processId, effect.id]);
|
|
958
973
|
if (claimed.changes !== 1)
|
|
959
974
|
return undefined;
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
975
|
+
const identity = await this.loadActorIdentity(connection, effect.instance_id);
|
|
976
|
+
return {
|
|
977
|
+
...effect,
|
|
978
|
+
...identity,
|
|
979
|
+
status: "processing",
|
|
980
|
+
claimed_by: processId,
|
|
981
|
+
attempt_count: Number(effect.attempt_count) + 1,
|
|
982
|
+
};
|
|
983
|
+
}, { isolationLevel: "read_committed" });
|
|
965
984
|
}
|
|
966
985
|
async completeEffect(effect, result) {
|
|
967
986
|
await this.settings.database.transaction(async (connection) => {
|
|
@@ -1029,31 +1048,114 @@ export class Repository {
|
|
|
1029
1048
|
const databaseNow = await connection.nowMilliseconds();
|
|
1030
1049
|
const dueAt = options.nowMilliseconds ?? databaseNow;
|
|
1031
1050
|
const staleAt = databaseNow - this.settings.processAliveThresholdMilliseconds;
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1051
|
+
const skippedCandidateIds = [];
|
|
1052
|
+
while (true) {
|
|
1053
|
+
const available = await this.findAvailableReminder({
|
|
1054
|
+
connection,
|
|
1055
|
+
dueAt,
|
|
1056
|
+
skippedCandidateIds,
|
|
1057
|
+
});
|
|
1058
|
+
const stale = await this.findStaleReminder({
|
|
1059
|
+
connection,
|
|
1060
|
+
dueAt,
|
|
1061
|
+
staleAt,
|
|
1062
|
+
skippedCandidateIds,
|
|
1063
|
+
});
|
|
1064
|
+
const candidate = earliestReminder(available, stale);
|
|
1065
|
+
if (!candidate)
|
|
1066
|
+
return undefined;
|
|
1067
|
+
const reminder = await this.lockReminderCandidate({
|
|
1068
|
+
connection,
|
|
1069
|
+
candidate,
|
|
1070
|
+
dueAt,
|
|
1071
|
+
staleAt,
|
|
1072
|
+
});
|
|
1073
|
+
if (!reminder) {
|
|
1074
|
+
skippedCandidateIds.push(candidate.id);
|
|
1075
|
+
continue;
|
|
1076
|
+
}
|
|
1077
|
+
const claimed = await this.claimReminderCandidate({
|
|
1078
|
+
connection,
|
|
1079
|
+
reminder,
|
|
1080
|
+
processId,
|
|
1081
|
+
claimedAt: databaseNow,
|
|
1082
|
+
staleAt,
|
|
1083
|
+
});
|
|
1084
|
+
if (claimed.changes !== 1) {
|
|
1085
|
+
skippedCandidateIds.push(reminder.id);
|
|
1086
|
+
continue;
|
|
1087
|
+
}
|
|
1088
|
+
const identity = await this.loadActorIdentity(connection, reminder.instance_id);
|
|
1089
|
+
return {
|
|
1090
|
+
...reminder,
|
|
1091
|
+
...identity,
|
|
1092
|
+
claimed_by: processId,
|
|
1093
|
+
claimed_at_ms: databaseNow,
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1096
|
+
}, { isolationLevel: "read_committed" });
|
|
1097
|
+
}
|
|
1098
|
+
findAvailableReminder(options) {
|
|
1099
|
+
const { connection, dueAt, skippedCandidateIds } = options;
|
|
1100
|
+
const exclusion = candidateExclusion("reminders", skippedCandidateIds);
|
|
1101
|
+
return connection.get(`SELECT reminders.*
|
|
1102
|
+
FROM ${this.table("reminders")} reminders
|
|
1103
|
+
WHERE reminders.status = 'scheduled' AND reminders.run_at_ms <= ?
|
|
1104
|
+
AND reminders.claimed_by IS NULL
|
|
1105
|
+
${exclusion.sql}
|
|
1106
|
+
ORDER BY reminders.run_at_ms, reminders.id
|
|
1107
|
+
LIMIT 1`, [dueAt, ...exclusion.parameters]);
|
|
1108
|
+
}
|
|
1109
|
+
findStaleReminder(options) {
|
|
1110
|
+
const { connection, dueAt, staleAt, skippedCandidateIds } = options;
|
|
1111
|
+
const exclusion = candidateExclusion("reminders", skippedCandidateIds);
|
|
1112
|
+
return connection.get(`SELECT reminders.*
|
|
1113
|
+
FROM ${this.table("reminders")} reminders
|
|
1114
|
+
WHERE reminders.status = 'scheduled' AND reminders.run_at_ms <= ?
|
|
1115
|
+
AND reminders.claimed_by IS NOT NULL AND (
|
|
1116
|
+
reminders.claimed_at_ms <= ? OR NOT EXISTS (
|
|
1035
1117
|
SELECT 1 FROM ${this.table("processes")} processes
|
|
1036
|
-
WHERE processes.id =
|
|
1118
|
+
WHERE processes.id = reminders.claimed_by
|
|
1037
1119
|
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1038
1120
|
)
|
|
1039
|
-
)
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1121
|
+
)
|
|
1122
|
+
${exclusion.sql}
|
|
1123
|
+
ORDER BY reminders.run_at_ms, reminders.id
|
|
1124
|
+
LIMIT 1`, [dueAt, staleAt, staleAt, ...exclusion.parameters]);
|
|
1125
|
+
}
|
|
1126
|
+
lockReminderCandidate(options) {
|
|
1127
|
+
const { connection, candidate, dueAt, staleAt } = options;
|
|
1128
|
+
if (candidate.claimed_by === null) {
|
|
1129
|
+
return connection.get(`SELECT reminders.* FROM ${this.table("reminders")} reminders
|
|
1130
|
+
WHERE reminders.id = ? AND reminders.status = 'scheduled'
|
|
1131
|
+
AND reminders.run_at_ms <= ? AND reminders.claimed_by IS NULL
|
|
1132
|
+
LIMIT 1${this.claimLockClause()}`, [candidate.id, dueAt]);
|
|
1133
|
+
}
|
|
1134
|
+
return connection.get(`SELECT reminders.* FROM ${this.table("reminders")} reminders
|
|
1135
|
+
WHERE reminders.id = ? AND reminders.status = 'scheduled'
|
|
1136
|
+
AND reminders.run_at_ms <= ? AND reminders.claimed_by IS NOT NULL AND (
|
|
1137
|
+
reminders.claimed_at_ms <= ? OR NOT EXISTS (
|
|
1138
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
1139
|
+
WHERE processes.id = reminders.claimed_by
|
|
1140
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1141
|
+
)
|
|
1142
|
+
)
|
|
1143
|
+
LIMIT 1${this.claimLockClause()}`, [candidate.id, dueAt, staleAt, staleAt]);
|
|
1144
|
+
}
|
|
1145
|
+
claimReminderCandidate(options) {
|
|
1146
|
+
const { connection, reminder, processId, claimedAt, staleAt } = options;
|
|
1147
|
+
if (reminder.claimed_by === null) {
|
|
1148
|
+
return connection.run(`UPDATE ${this.table("reminders")} SET claimed_by = ?, claimed_at_ms = ?
|
|
1149
|
+
WHERE id = ? AND status = 'scheduled' AND claimed_by IS NULL`, [processId, claimedAt, reminder.id]);
|
|
1150
|
+
}
|
|
1151
|
+
return connection.run(`UPDATE ${this.table("reminders")} SET claimed_by = ?, claimed_at_ms = ?
|
|
1152
|
+
WHERE id = ? AND status = 'scheduled' AND claimed_by = ? AND (
|
|
1153
|
+
claimed_at_ms <= ? OR NOT EXISTS (
|
|
1154
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
1155
|
+
WHERE processes.id = ${this.table("reminders")}.claimed_by
|
|
1156
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1157
|
+
)
|
|
1158
|
+
)`, [processId, claimedAt, reminder.id, reminder.claimed_by, staleAt, staleAt]);
|
|
1057
1159
|
}
|
|
1058
1160
|
async enqueueReminder(reminder, options = {}) {
|
|
1059
1161
|
await this.settings.database.transaction(async (connection) => {
|
|
@@ -1110,36 +1212,128 @@ export class Repository {
|
|
|
1110
1212
|
return this.settings.database.transaction(async (connection) => {
|
|
1111
1213
|
const now = await connection.nowMilliseconds();
|
|
1112
1214
|
const staleAt = now - this.settings.processAliveThresholdMilliseconds;
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1215
|
+
const skippedCandidateIds = [];
|
|
1216
|
+
while (true) {
|
|
1217
|
+
const pending = await this.findPendingBroadcast({
|
|
1218
|
+
connection,
|
|
1219
|
+
now,
|
|
1220
|
+
skippedCandidateIds,
|
|
1221
|
+
});
|
|
1222
|
+
const stale = await this.findStaleBroadcast({
|
|
1223
|
+
connection,
|
|
1224
|
+
staleAt,
|
|
1225
|
+
skippedCandidateIds,
|
|
1226
|
+
});
|
|
1227
|
+
const candidate = earliestBroadcast(pending, stale);
|
|
1228
|
+
if (!candidate)
|
|
1229
|
+
return undefined;
|
|
1230
|
+
const broadcast = await this.lockBroadcastCandidate({
|
|
1231
|
+
connection,
|
|
1232
|
+
candidate,
|
|
1233
|
+
now,
|
|
1234
|
+
staleAt,
|
|
1235
|
+
});
|
|
1236
|
+
if (!broadcast) {
|
|
1237
|
+
skippedCandidateIds.push(candidate.id);
|
|
1238
|
+
continue;
|
|
1239
|
+
}
|
|
1240
|
+
const claimed = await this.claimBroadcastCandidate({
|
|
1241
|
+
connection,
|
|
1242
|
+
broadcast,
|
|
1243
|
+
processId,
|
|
1244
|
+
staleAt,
|
|
1245
|
+
});
|
|
1246
|
+
if (claimed.changes !== 1) {
|
|
1247
|
+
skippedCandidateIds.push(broadcast.id);
|
|
1248
|
+
continue;
|
|
1249
|
+
}
|
|
1250
|
+
broadcast.status = "processing";
|
|
1251
|
+
broadcast.claimed_by = processId;
|
|
1252
|
+
broadcast.attempt_count = Number(broadcast.attempt_count) + 1;
|
|
1253
|
+
return broadcast;
|
|
1254
|
+
}
|
|
1255
|
+
}, { isolationLevel: "read_committed" });
|
|
1256
|
+
}
|
|
1257
|
+
findPendingBroadcast(options) {
|
|
1258
|
+
const { connection, now, skippedCandidateIds } = options;
|
|
1259
|
+
const exclusion = candidateExclusion("broadcasts", skippedCandidateIds);
|
|
1260
|
+
return connection.get(`SELECT broadcasts.* FROM ${this.table("broadcasts")} broadcasts
|
|
1261
|
+
WHERE broadcasts.status = 'pending' AND broadcasts.available_at_ms <= ?
|
|
1262
|
+
AND NOT EXISTS (
|
|
1263
|
+
SELECT 1 FROM ${this.table("broadcasts")} earlier
|
|
1264
|
+
WHERE earlier.instance_id = broadcasts.instance_id
|
|
1265
|
+
AND earlier.state_revision < broadcasts.state_revision
|
|
1266
|
+
AND earlier.status IN ('pending', 'processing')
|
|
1267
|
+
)
|
|
1268
|
+
${exclusion.sql}
|
|
1269
|
+
ORDER BY broadcasts.available_at_ms, broadcasts.id
|
|
1270
|
+
LIMIT 1`, [now, ...exclusion.parameters]);
|
|
1271
|
+
}
|
|
1272
|
+
findStaleBroadcast(options) {
|
|
1273
|
+
const { connection, staleAt, skippedCandidateIds } = options;
|
|
1274
|
+
const exclusion = candidateExclusion("broadcasts", skippedCandidateIds);
|
|
1275
|
+
return connection.get(`SELECT broadcasts.* FROM ${this.table("broadcasts")} broadcasts
|
|
1276
|
+
WHERE broadcasts.status = 'processing' AND (
|
|
1277
|
+
broadcasts.claimed_by IS NULL OR NOT EXISTS (
|
|
1278
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
1279
|
+
WHERE processes.id = broadcasts.claimed_by
|
|
1280
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1281
|
+
)
|
|
1282
|
+
)
|
|
1283
|
+
AND NOT EXISTS (
|
|
1284
|
+
SELECT 1 FROM ${this.table("broadcasts")} earlier
|
|
1285
|
+
WHERE earlier.instance_id = broadcasts.instance_id
|
|
1286
|
+
AND earlier.state_revision < broadcasts.state_revision
|
|
1287
|
+
AND earlier.status IN ('pending', 'processing')
|
|
1288
|
+
)
|
|
1289
|
+
${exclusion.sql}
|
|
1290
|
+
ORDER BY broadcasts.available_at_ms, broadcasts.id
|
|
1291
|
+
LIMIT 1`, [staleAt, ...exclusion.parameters]);
|
|
1292
|
+
}
|
|
1293
|
+
lockBroadcastCandidate(options) {
|
|
1294
|
+
const { connection, candidate, now, staleAt } = options;
|
|
1295
|
+
if (candidate.status === "pending") {
|
|
1296
|
+
return connection.get(`SELECT broadcasts.* FROM ${this.table("broadcasts")} broadcasts
|
|
1297
|
+
WHERE broadcasts.id = ? AND broadcasts.status = 'pending'
|
|
1298
|
+
AND broadcasts.available_at_ms <= ? AND NOT EXISTS (
|
|
1124
1299
|
SELECT 1 FROM ${this.table("broadcasts")} earlier
|
|
1125
1300
|
WHERE earlier.instance_id = broadcasts.instance_id
|
|
1126
1301
|
AND earlier.state_revision < broadcasts.state_revision
|
|
1127
1302
|
AND earlier.status IN ('pending', 'processing')
|
|
1128
1303
|
)
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1304
|
+
LIMIT 1${this.claimLockClause()}`, [candidate.id, now]);
|
|
1305
|
+
}
|
|
1306
|
+
return connection.get(`SELECT broadcasts.* FROM ${this.table("broadcasts")} broadcasts
|
|
1307
|
+
WHERE broadcasts.id = ? AND broadcasts.status = 'processing' AND (
|
|
1308
|
+
broadcasts.claimed_by IS NULL OR NOT EXISTS (
|
|
1309
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
1310
|
+
WHERE processes.id = broadcasts.claimed_by
|
|
1311
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1312
|
+
)
|
|
1313
|
+
) AND NOT EXISTS (
|
|
1314
|
+
SELECT 1 FROM ${this.table("broadcasts")} earlier
|
|
1315
|
+
WHERE earlier.instance_id = broadcasts.instance_id
|
|
1316
|
+
AND earlier.state_revision < broadcasts.state_revision
|
|
1317
|
+
AND earlier.status IN ('pending', 'processing')
|
|
1318
|
+
)
|
|
1319
|
+
LIMIT 1${this.claimLockClause()}`, [candidate.id, staleAt]);
|
|
1320
|
+
}
|
|
1321
|
+
claimBroadcastCandidate(options) {
|
|
1322
|
+
const { connection, broadcast, processId, staleAt } = options;
|
|
1323
|
+
if (broadcast.status === "pending") {
|
|
1324
|
+
return connection.run(`UPDATE ${this.table("broadcasts")}
|
|
1134
1325
|
SET status = 'processing', claimed_by = ?, attempt_count = attempt_count + 1
|
|
1135
1326
|
WHERE id = ? AND status = 'pending'`, [processId, broadcast.id]);
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1327
|
+
}
|
|
1328
|
+
return connection.run(`UPDATE ${this.table("broadcasts")}
|
|
1329
|
+
SET claimed_by = ?, attempt_count = attempt_count + 1
|
|
1330
|
+
WHERE id = ? AND status = 'processing' AND (
|
|
1331
|
+
claimed_by IS NULL OR NOT EXISTS (
|
|
1332
|
+
SELECT 1 FROM ${this.table("processes")} processes
|
|
1333
|
+
WHERE processes.id = ${this.table("broadcasts")}.claimed_by
|
|
1334
|
+
AND processes.shutdown_state = 'running' AND processes.heartbeat_at_ms > ?
|
|
1335
|
+
)
|
|
1336
|
+
)`, [processId, broadcast.id, staleAt]);
|
|
1143
1337
|
}
|
|
1144
1338
|
async completeBroadcast(broadcast) {
|
|
1145
1339
|
await this.settings.database.transaction(async (connection) => {
|
|
@@ -1165,6 +1359,17 @@ export class Repository {
|
|
|
1165
1359
|
throw new LostActivation("broadcast claim no longer matches");
|
|
1166
1360
|
});
|
|
1167
1361
|
}
|
|
1362
|
+
claimLockClause() {
|
|
1363
|
+
if (this.settings.database.family === "sqlite")
|
|
1364
|
+
return "";
|
|
1365
|
+
return " FOR UPDATE SKIP LOCKED";
|
|
1366
|
+
}
|
|
1367
|
+
async loadActorIdentity(connection, instanceId) {
|
|
1368
|
+
const identity = await connection.get(`SELECT actor_type, actor_id FROM ${this.table("instances")} WHERE id = ?`, [instanceId]);
|
|
1369
|
+
if (!identity)
|
|
1370
|
+
throw new Error("claimed outbox instance does not exist");
|
|
1371
|
+
return identity;
|
|
1372
|
+
}
|
|
1168
1373
|
findInstance(options) {
|
|
1169
1374
|
const { connection, actorType, actorId } = options;
|
|
1170
1375
|
return connection.get(`SELECT * FROM ${this.table("instances")} WHERE actor_type = ? AND actor_id = ?${options.lock === "update" ? " FOR UPDATE" : ""}`, [actorType, actorId]);
|
|
@@ -1214,6 +1419,39 @@ export class Repository {
|
|
|
1214
1419
|
]);
|
|
1215
1420
|
}
|
|
1216
1421
|
}
|
|
1422
|
+
function candidateExclusion(tableAlias, skippedCandidateIds) {
|
|
1423
|
+
if (skippedCandidateIds.length === 0)
|
|
1424
|
+
return { sql: "", parameters: [] };
|
|
1425
|
+
const placeholders = skippedCandidateIds.map(() => "?").join(", ");
|
|
1426
|
+
return {
|
|
1427
|
+
sql: `AND ${tableAlias}.id NOT IN (${placeholders})`,
|
|
1428
|
+
parameters: skippedCandidateIds,
|
|
1429
|
+
};
|
|
1430
|
+
}
|
|
1431
|
+
function earliestBroadcast(first, second) {
|
|
1432
|
+
if (!first)
|
|
1433
|
+
return second;
|
|
1434
|
+
if (!second)
|
|
1435
|
+
return first;
|
|
1436
|
+
const availableAtDifference = Number(first.available_at_ms) - Number(second.available_at_ms);
|
|
1437
|
+
if (availableAtDifference < 0)
|
|
1438
|
+
return first;
|
|
1439
|
+
if (availableAtDifference > 0)
|
|
1440
|
+
return second;
|
|
1441
|
+
return first.id < second.id ? first : second;
|
|
1442
|
+
}
|
|
1443
|
+
function earliestReminder(first, second) {
|
|
1444
|
+
if (!first)
|
|
1445
|
+
return second;
|
|
1446
|
+
if (!second)
|
|
1447
|
+
return first;
|
|
1448
|
+
const runAtDifference = Number(first.run_at_ms) - Number(second.run_at_ms);
|
|
1449
|
+
if (runAtDifference < 0)
|
|
1450
|
+
return first;
|
|
1451
|
+
if (runAtDifference > 0)
|
|
1452
|
+
return second;
|
|
1453
|
+
return first.id < second.id ? first : second;
|
|
1454
|
+
}
|
|
1217
1455
|
function nextReminderRun(options) {
|
|
1218
1456
|
const { previousRun, interval, missedPolicy, now } = options;
|
|
1219
1457
|
if (missedPolicy === "all")
|