fluxmail 0.12.0 → 0.13.0
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/README.md +1 -1
- package/dist/accounts/registry.d.ts.map +1 -1
- package/dist/accounts/registry.js +4 -1
- package/dist/accounts/registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +85 -16
- package/dist/cli.js.map +1 -1
- package/dist/cliInstances.d.ts.map +1 -1
- package/dist/cliInstances.js +9 -8
- package/dist/cliInstances.js.map +1 -1
- package/dist/cliMail.d.ts.map +1 -1
- package/dist/cliMail.js +1 -1
- package/dist/cliMail.js.map +1 -1
- package/dist/cliStartupDiagnostics.d.ts +12 -0
- package/dist/cliStartupDiagnostics.d.ts.map +1 -0
- package/dist/cliStartupDiagnostics.js +47 -0
- package/dist/cliStartupDiagnostics.js.map +1 -0
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +15 -16
- package/dist/context.js.map +1 -1
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +10 -6
- package/dist/http/app.js.map +1 -1
- package/dist/licensing/refresher.d.ts +1 -1
- package/dist/licensing/refresher.d.ts.map +1 -1
- package/dist/licensing/refresher.js +5 -2
- package/dist/licensing/refresher.js.map +1 -1
- package/dist/lifecycle.d.ts +28 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +115 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/mcp/buildServer.js +2 -2
- package/dist/mcp/buildServer.js.map +1 -1
- package/dist/scheduler/sendScheduler.d.ts +8 -15
- package/dist/scheduler/sendScheduler.d.ts.map +1 -1
- package/dist/scheduler/sendScheduler.js +96 -69
- package/dist/scheduler/sendScheduler.js.map +1 -1
- package/dist/service/deliveryCoordinator.d.ts +1 -1
- package/dist/service/deliveryCoordinator.d.ts.map +1 -1
- package/dist/service/deliveryCoordinator.js +3 -1
- package/dist/service/deliveryCoordinator.js.map +1 -1
- package/dist/service/emailService.d.ts +1 -1
- package/dist/service/emailService.d.ts.map +1 -1
- package/dist/service/emailService.js +4 -2
- package/dist/service/emailService.js.map +1 -1
- package/dist/storage/db.d.ts +19 -2
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +6 -1
- package/dist/storage/db.js.map +1 -1
- package/dist/storage/scheduledSends.d.ts +6 -1
- package/dist/storage/scheduledSends.d.ts.map +1 -1
- package/dist/storage/scheduledSends.js +36 -19
- package/dist/storage/scheduledSends.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const SIGNALS = ['SIGINT', 'SIGTERM', 'SIGHUP'];
|
|
2
|
+
/** Owns the lifetime of a server or a foreground scheduler, including startup failures. */
|
|
3
|
+
export class RuntimeLifecycle {
|
|
4
|
+
context;
|
|
5
|
+
flush;
|
|
6
|
+
terminate;
|
|
7
|
+
deadlineMs;
|
|
8
|
+
server;
|
|
9
|
+
closing;
|
|
10
|
+
requests = new Set();
|
|
11
|
+
terminated = false;
|
|
12
|
+
deadline;
|
|
13
|
+
// Scheduler and license timers are unreferenced. An empty runner must still stay alive.
|
|
14
|
+
lifetime = setInterval(() => { }, 60_000);
|
|
15
|
+
handlers = new Map();
|
|
16
|
+
constructor(context, flush, terminate = (signal) => {
|
|
17
|
+
process.kill(process.pid, signal);
|
|
18
|
+
}, deadlineMs = 30_000) {
|
|
19
|
+
this.context = context;
|
|
20
|
+
this.flush = flush;
|
|
21
|
+
this.terminate = terminate;
|
|
22
|
+
this.deadlineMs = deadlineMs;
|
|
23
|
+
for (const signal of SIGNALS) {
|
|
24
|
+
const handler = () => {
|
|
25
|
+
if (this.closing) {
|
|
26
|
+
this.force(signal);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.deadline = setTimeout(() => this.force(signal), this.deadlineMs);
|
|
30
|
+
void this.close().then(() => this.force(signal), () => this.force(signal));
|
|
31
|
+
};
|
|
32
|
+
this.handlers.set(signal, handler);
|
|
33
|
+
process.on(signal, handler);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
get stopping() {
|
|
37
|
+
return this.closing !== undefined;
|
|
38
|
+
}
|
|
39
|
+
attachServer(server) {
|
|
40
|
+
this.server = server;
|
|
41
|
+
}
|
|
42
|
+
async request(handle) {
|
|
43
|
+
const task = Promise.resolve().then(handle);
|
|
44
|
+
this.requests.add(task);
|
|
45
|
+
try {
|
|
46
|
+
return await task;
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
this.requests.delete(task);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
force(signal) {
|
|
53
|
+
if (this.terminated)
|
|
54
|
+
return;
|
|
55
|
+
this.terminated = true;
|
|
56
|
+
this.dispose();
|
|
57
|
+
this.terminate(signal);
|
|
58
|
+
}
|
|
59
|
+
dispose() {
|
|
60
|
+
if (this.deadline)
|
|
61
|
+
clearTimeout(this.deadline);
|
|
62
|
+
clearInterval(this.lifetime);
|
|
63
|
+
for (const [signal, handler] of this.handlers)
|
|
64
|
+
process.off(signal, handler);
|
|
65
|
+
}
|
|
66
|
+
close() {
|
|
67
|
+
if (this.closing)
|
|
68
|
+
return this.closing;
|
|
69
|
+
// Both stop calls disable their timers synchronously before waiting for active work.
|
|
70
|
+
const scheduler = this.context.scheduler.stop();
|
|
71
|
+
const refresh = this.context.licenseController.stop();
|
|
72
|
+
const http = new Promise((resolve, reject) => {
|
|
73
|
+
if (!this.server)
|
|
74
|
+
return resolve();
|
|
75
|
+
this.server.close((error) => {
|
|
76
|
+
if (error && error.code !== 'ERR_SERVER_NOT_RUNNING')
|
|
77
|
+
reject(error);
|
|
78
|
+
else
|
|
79
|
+
resolve();
|
|
80
|
+
});
|
|
81
|
+
this.server.closeIdleConnections?.();
|
|
82
|
+
});
|
|
83
|
+
this.closing = (async () => {
|
|
84
|
+
// Do not close the database or providers until every task has finished, even if one fails.
|
|
85
|
+
const drains = await Promise.allSettled([scheduler, refresh, http, ...this.requests]);
|
|
86
|
+
if (this.terminated)
|
|
87
|
+
return;
|
|
88
|
+
const failures = drains.filter((result) => result.status === 'rejected').map((result) => result.reason);
|
|
89
|
+
try {
|
|
90
|
+
await this.context.registry.close();
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
failures.push(error);
|
|
94
|
+
}
|
|
95
|
+
if (this.terminated)
|
|
96
|
+
return;
|
|
97
|
+
try {
|
|
98
|
+
this.context.db.$client.close();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
failures.push(error);
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
await this.flush();
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
this.dispose();
|
|
108
|
+
}
|
|
109
|
+
if (failures.length)
|
|
110
|
+
throw failures[0];
|
|
111
|
+
})();
|
|
112
|
+
return this.closing;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/buildServer.js
CHANGED
|
@@ -637,8 +637,8 @@ export function buildMcpServer(service, options = {}) {
|
|
|
637
637
|
.optional()
|
|
638
638
|
.describe('Schedule delivery instead of sending now: ISO 8601 with timezone offset or Z ' +
|
|
639
639
|
'(e.g. 2026-07-11T09:00:00-07:00). Fluxmail saves the message as a real draft in the mailbox ' +
|
|
640
|
-
'
|
|
641
|
-
'
|
|
640
|
+
'for delivery by fluxmail serve or fluxmail scheduled run using the same store. Stdio does not ' +
|
|
641
|
+
'deliver schedules. Overdue mail may send when a worker starts. Returns a scheduleId for list/cancel.'),
|
|
642
642
|
},
|
|
643
643
|
annotations: { destructiveHint: true },
|
|
644
644
|
}, handleResult('send_email', async (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildServer.js","sourceRoot":"","sources":["../../src/mcp/buildServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildServer.js","sourceRoot":"","sources":["../../src/mcp/buildServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,38 +2,31 @@ import { type SendResult } from '@fluxmail/core';
|
|
|
2
2
|
import type { DeliveryOperation } from '../service/deliveryCoordinator.js';
|
|
3
3
|
import type { FluxmailDb } from '../storage/db.js';
|
|
4
4
|
import { type Logger } from '../logging.js';
|
|
5
|
-
/** The slice of EmailService the scheduler needs. */
|
|
6
5
|
export interface ScheduledSender {
|
|
7
6
|
send(accountId: string | undefined, input: {
|
|
8
7
|
draftId: string;
|
|
9
8
|
}): Promise<SendResult>;
|
|
10
|
-
deliverScheduled?(accountId: string, draftId: string, scheduleId: string): Promise<DeliveryOperation>;
|
|
9
|
+
deliverScheduled?(accountId: string, draftId: string, scheduleId: string, ownsClaim: () => boolean): Promise<DeliveryOperation>;
|
|
11
10
|
/** Throws while a lapsed license leaves the instance over the plan quota. */
|
|
12
11
|
enforceQuota(): string | undefined;
|
|
13
12
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Fires scheduled sends when their time comes. Owned by the long-lived
|
|
16
|
-
* processes (serve/stdio); one-shot CLI commands construct it but never
|
|
17
|
-
* start() it. Database claims allow multiple schedulers to share a store.
|
|
18
|
-
*/
|
|
13
|
+
/** Instance-wide delivery worker, explicitly started by serve or scheduled run. */
|
|
19
14
|
export declare class SendScheduler {
|
|
20
15
|
private readonly db;
|
|
21
16
|
private readonly service;
|
|
22
17
|
private readonly logger?;
|
|
23
|
-
private timer
|
|
18
|
+
private timer?;
|
|
24
19
|
private running;
|
|
25
|
-
private
|
|
20
|
+
private active?;
|
|
26
21
|
private rerun;
|
|
27
|
-
/** Retry gates for transient failures; in-memory only (a restart just retries immediately). */
|
|
28
|
-
private backoff;
|
|
29
|
-
/** While over the plan quota, due sends are held and re-checked no sooner than this. */
|
|
30
22
|
private quotaHoldUntil;
|
|
31
23
|
constructor(db: FluxmailDb, service: ScheduledSender, logger?: Logger | undefined);
|
|
32
|
-
/** Starts the loop; immediately fires anything past due (catch-up after downtime). */
|
|
33
24
|
start(): void;
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
/** Disable discovery immediately, then wait for the active delivery to record its outcome. */
|
|
26
|
+
stop(): Promise<void>;
|
|
36
27
|
wake(): void;
|
|
28
|
+
/** Only a successful license refresh may shorten a quota hold. */
|
|
29
|
+
licenseRefreshed(): void;
|
|
37
30
|
private tick;
|
|
38
31
|
private fire;
|
|
39
32
|
private arm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendScheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler/sendScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sendScheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler/sendScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAcxD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrF,gBAAgB,CAAC,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,OAAO,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,6EAA6E;IAC7E,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;CACpC;AAQD,mFAAmF;AACnF,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAT1B,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAK;gBAGR,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGlC,KAAK,IAAI,IAAI;IAMb,8FAA8F;IACxF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,IAAI,IAAI,IAAI;IAqBZ,kEAAkE;IAClE,gBAAgB,IAAI,IAAI;YAKV,IAAI;YA2BJ,IAAI;IAoDlB,OAAO,CAAC,GAAG;CAgBZ"}
|
|
@@ -1,105 +1,134 @@
|
|
|
1
1
|
import { isEmailError } from '@fluxmail/core';
|
|
2
2
|
import { logFailure } from '../logging.js';
|
|
3
|
-
import { claimScheduledSend, completeClaim, failClaim, holdPending, listActive, listClaimable, retryClaim, uncertainClaim, } from '../storage/scheduledSends.js';
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const BASE_BACKOFF_MS = 30_000;
|
|
3
|
+
import { claimScheduledSend, completeClaim, failClaim, holdPending, listActive, listClaimable, renewClaim, retryClaim, uncertainClaim, } from '../storage/scheduledSends.js';
|
|
4
|
+
const POLL_MS = 1_000;
|
|
5
|
+
const QUOTA_RECHECK_MS = 15 * 60_000;
|
|
7
6
|
const CLAIM_LEASE_MS = 5 * 60_000;
|
|
8
|
-
|
|
7
|
+
const CLAIM_RENEW_MS = 60_000;
|
|
9
8
|
const PERMANENT_CODES = new Set(['not_found', 'invalid_request', 'permission_denied', 'unsupported_capability']);
|
|
10
|
-
/**
|
|
11
|
-
* Fires scheduled sends when their time comes. Owned by the long-lived
|
|
12
|
-
* processes (serve/stdio); one-shot CLI commands construct it but never
|
|
13
|
-
* start() it. Database claims allow multiple schedulers to share a store.
|
|
14
|
-
*/
|
|
9
|
+
/** Instance-wide delivery worker, explicitly started by serve or scheduled run. */
|
|
15
10
|
export class SendScheduler {
|
|
16
11
|
db;
|
|
17
12
|
service;
|
|
18
13
|
logger;
|
|
19
14
|
timer;
|
|
20
15
|
running = false;
|
|
21
|
-
|
|
16
|
+
active;
|
|
22
17
|
rerun = false;
|
|
23
|
-
/** Retry gates for transient failures; in-memory only (a restart just retries immediately). */
|
|
24
|
-
backoff = new Map();
|
|
25
|
-
/** While over the plan quota, due sends are held and re-checked no sooner than this. */
|
|
26
18
|
quotaHoldUntil = 0;
|
|
27
19
|
constructor(db, service, logger) {
|
|
28
20
|
this.db = db;
|
|
29
21
|
this.service = service;
|
|
30
22
|
this.logger = logger;
|
|
31
23
|
}
|
|
32
|
-
/** Starts the loop; immediately fires anything past due (catch-up after downtime). */
|
|
33
24
|
start() {
|
|
25
|
+
if (this.running)
|
|
26
|
+
return;
|
|
34
27
|
this.running = true;
|
|
35
|
-
|
|
28
|
+
this.wake();
|
|
36
29
|
}
|
|
37
|
-
|
|
30
|
+
/** Disable discovery immediately, then wait for the active delivery to record its outcome. */
|
|
31
|
+
async stop() {
|
|
38
32
|
this.running = false;
|
|
33
|
+
this.rerun = false;
|
|
39
34
|
if (this.timer)
|
|
40
35
|
clearTimeout(this.timer);
|
|
41
36
|
this.timer = undefined;
|
|
37
|
+
await this.active;
|
|
42
38
|
}
|
|
43
|
-
/** Poke after any schedule change (new, canceled, or sent early). */
|
|
44
39
|
wake() {
|
|
45
|
-
if (this.running)
|
|
46
|
-
void this.tick();
|
|
47
|
-
}
|
|
48
|
-
async tick() {
|
|
49
40
|
if (!this.running)
|
|
50
41
|
return;
|
|
51
|
-
if (this.
|
|
42
|
+
if (this.timer)
|
|
43
|
+
clearTimeout(this.timer);
|
|
44
|
+
this.timer = undefined;
|
|
45
|
+
if (this.active) {
|
|
52
46
|
this.rerun = true;
|
|
53
47
|
return;
|
|
54
48
|
}
|
|
55
|
-
|
|
49
|
+
// Defer tick so active is assigned before any synchronous quota check can wake us.
|
|
50
|
+
this.active = Promise.resolve()
|
|
51
|
+
.then(() => this.tick())
|
|
52
|
+
.finally(() => {
|
|
53
|
+
this.active = undefined;
|
|
54
|
+
if (!this.running)
|
|
55
|
+
return;
|
|
56
|
+
if (this.rerun) {
|
|
57
|
+
this.rerun = false;
|
|
58
|
+
this.wake();
|
|
59
|
+
}
|
|
60
|
+
else
|
|
61
|
+
this.arm();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** Only a successful license refresh may shorten a quota hold. */
|
|
65
|
+
licenseRefreshed() {
|
|
66
|
+
this.quotaHoldUntil = 0;
|
|
67
|
+
this.wake();
|
|
68
|
+
}
|
|
69
|
+
async tick() {
|
|
70
|
+
if (!this.running)
|
|
71
|
+
return;
|
|
56
72
|
try {
|
|
57
73
|
const now = Date.now();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
74
|
+
if (now < this.quotaHoldUntil)
|
|
75
|
+
return;
|
|
76
|
+
const due = listClaimable(this.db, now).sort((a, b) => a.sendAt - b.sendAt);
|
|
61
77
|
if (due.length) {
|
|
62
78
|
try {
|
|
63
79
|
this.service.enforceQuota();
|
|
64
80
|
this.quotaHoldUntil = 0;
|
|
65
81
|
}
|
|
66
82
|
catch (err) {
|
|
67
|
-
|
|
68
|
-
// attempt consumed) and re-check later; they fire once the license
|
|
69
|
-
// is renewed or usage is trimmed to fit the plan.
|
|
70
|
-
this.quotaHoldUntil = now + MAX_ARM_MS;
|
|
83
|
+
this.quotaHoldUntil = now + QUOTA_RECHECK_MS;
|
|
71
84
|
const message = err instanceof Error ? err.message : String(err);
|
|
72
85
|
logFailure(this.logger, 'scheduler.quota_held', err, { details: { pending_count: due.length } });
|
|
73
86
|
for (const row of due)
|
|
74
87
|
holdPending(this.db, row.id, message);
|
|
75
|
-
|
|
88
|
+
return;
|
|
76
89
|
}
|
|
77
90
|
}
|
|
78
|
-
for (const row of due)
|
|
91
|
+
for (const row of due) {
|
|
92
|
+
if (!this.running)
|
|
93
|
+
break;
|
|
79
94
|
await this.fire(row);
|
|
95
|
+
}
|
|
80
96
|
}
|
|
81
97
|
catch (err) {
|
|
82
98
|
logFailure(this.logger, 'scheduler.tick_failed', err);
|
|
83
99
|
}
|
|
84
|
-
finally {
|
|
85
|
-
this.processing = false;
|
|
86
|
-
}
|
|
87
|
-
if (this.rerun) {
|
|
88
|
-
this.rerun = false;
|
|
89
|
-
return void this.tick();
|
|
90
|
-
}
|
|
91
|
-
this.arm();
|
|
92
100
|
}
|
|
93
101
|
async fire(row) {
|
|
94
102
|
const claim = claimScheduledSend(this.db, row.id, Date.now(), CLAIM_LEASE_MS);
|
|
95
|
-
if (!claim)
|
|
96
|
-
this.backoff.delete(row.id);
|
|
103
|
+
if (!claim)
|
|
97
104
|
return;
|
|
98
|
-
|
|
105
|
+
let lostOwnership = false;
|
|
106
|
+
const ownsClaim = () => {
|
|
107
|
+
if (lostOwnership)
|
|
108
|
+
return false;
|
|
109
|
+
try {
|
|
110
|
+
if (renewClaim(this.db, row.id, claim.token, Date.now(), CLAIM_LEASE_MS))
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
logFailure(this.logger, 'scheduler.claim_renewal_failed', err);
|
|
115
|
+
}
|
|
116
|
+
lostOwnership = true;
|
|
117
|
+
return false;
|
|
118
|
+
};
|
|
119
|
+
const heartbeat = setInterval(ownsClaim, CLAIM_RENEW_MS);
|
|
120
|
+
heartbeat.unref();
|
|
99
121
|
try {
|
|
122
|
+
if (!ownsClaim())
|
|
123
|
+
return;
|
|
100
124
|
const operation = this.service.deliverScheduled
|
|
101
|
-
? await this.service.deliverScheduled(row.accountId, row.draftId, row.id)
|
|
102
|
-
: {
|
|
125
|
+
? await this.service.deliverScheduled(claim.row.accountId, claim.row.draftId, row.id, ownsClaim)
|
|
126
|
+
: {
|
|
127
|
+
status: 'succeeded',
|
|
128
|
+
result: await this.service.send(claim.row.accountId, { draftId: claim.row.draftId }),
|
|
129
|
+
};
|
|
130
|
+
if (lostOwnership && operation.status === 'queued')
|
|
131
|
+
return;
|
|
103
132
|
if (operation.status === 'succeeded' && operation.result) {
|
|
104
133
|
completeClaim(this.db, row.id, claim.token, operation.result);
|
|
105
134
|
}
|
|
@@ -109,41 +138,39 @@ export class SendScheduler {
|
|
|
109
138
|
else {
|
|
110
139
|
uncertainClaim(this.db, row.id, claim.token, 'Delivery outcome is uncertain. Check Sent before sending again.');
|
|
111
140
|
}
|
|
112
|
-
this.backoff.delete(row.id);
|
|
113
141
|
}
|
|
114
142
|
catch (err) {
|
|
115
143
|
const message = err instanceof Error ? err.message : String(err);
|
|
116
144
|
if (isEmailError(err) && PERMANENT_CODES.has(err.code)) {
|
|
117
|
-
this.logger?.warn('scheduler.send_failed', message, err, {
|
|
118
|
-
details: { permanent: true },
|
|
119
|
-
});
|
|
145
|
+
this.logger?.warn('scheduler.send_failed', message, err, { details: { permanent: true } });
|
|
120
146
|
failClaim(this.db, row.id, claim.token, err.code === 'not_found' ? 'Draft no longer exists: it was sent or deleted outside Fluxmail' : message);
|
|
121
|
-
this.backoff.delete(row.id);
|
|
122
147
|
}
|
|
123
148
|
else {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
logFailure(this.logger, 'scheduler.send_retry', err, {
|
|
128
|
-
details: { attempt, permanent: false },
|
|
129
|
-
});
|
|
130
|
-
this.backoff.set(row.id, {
|
|
131
|
-
attempt,
|
|
132
|
-
notBefore: Date.now() + Math.min(BASE_BACKOFF_MS * 2 ** (attempt - 1), MAX_ARM_MS),
|
|
133
|
-
});
|
|
149
|
+
const attempt = retryClaim(this.db, row.id, claim.token, message);
|
|
150
|
+
if (attempt !== undefined)
|
|
151
|
+
logFailure(this.logger, 'scheduler.send_retry', err, { details: { attempt, permanent: false } });
|
|
134
152
|
}
|
|
135
153
|
}
|
|
154
|
+
finally {
|
|
155
|
+
clearInterval(heartbeat);
|
|
156
|
+
}
|
|
136
157
|
}
|
|
137
158
|
arm() {
|
|
138
|
-
if (this.
|
|
139
|
-
clearTimeout(this.timer);
|
|
140
|
-
this.timer = undefined;
|
|
141
|
-
const pending = listActive(this.db);
|
|
142
|
-
if (!pending.length)
|
|
159
|
+
if (!this.running)
|
|
143
160
|
return;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
161
|
+
let delay = POLL_MS;
|
|
162
|
+
try {
|
|
163
|
+
const now = Date.now();
|
|
164
|
+
const pending = listActive(this.db);
|
|
165
|
+
if (pending.length && now >= this.quotaHoldUntil) {
|
|
166
|
+
const next = Math.min(...pending.map((r) => Math.max(r.sendAt, r.nextAttemptAt, r.claimUntil ?? 0)));
|
|
167
|
+
delay = Math.min(POLL_MS, Math.max(next - now, 1));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
logFailure(this.logger, 'scheduler.poll_failed', err);
|
|
172
|
+
}
|
|
173
|
+
this.timer = setTimeout(() => this.wake(), delay);
|
|
147
174
|
this.timer.unref();
|
|
148
175
|
}
|
|
149
176
|
}
|