mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 08:37:41 +00:00
fix(runtime): guard cleanup and preserve skipped cron jobs
This commit is contained in:
@@ -2,7 +2,7 @@ import { describe, expect, it } from "vitest";
|
|||||||
import type { WebhookContext } from "../types.js";
|
import type { WebhookContext } from "../types.js";
|
||||||
import { TwilioProvider } from "./twilio.js";
|
import { TwilioProvider } from "./twilio.js";
|
||||||
|
|
||||||
const STREAM_URL_PREFIX = "wss://example.ngrok.app/voice/stream?token=";
|
const STREAM_URL = "wss://example.ngrok.app/voice/stream";
|
||||||
|
|
||||||
function createProvider(): TwilioProvider {
|
function createProvider(): TwilioProvider {
|
||||||
return new TwilioProvider(
|
return new TwilioProvider(
|
||||||
@@ -30,7 +30,8 @@ describe("TwilioProvider", () => {
|
|||||||
|
|
||||||
const result = provider.parseWebhookEvent(ctx);
|
const result = provider.parseWebhookEvent(ctx);
|
||||||
|
|
||||||
expect(result.providerResponseBody).toContain(STREAM_URL_PREFIX);
|
expect(result.providerResponseBody).toContain(STREAM_URL);
|
||||||
|
expect(result.providerResponseBody).toContain('<Parameter name="token" value="');
|
||||||
expect(result.providerResponseBody).toContain("<Connect>");
|
expect(result.providerResponseBody).toContain("<Connect>");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -54,7 +55,8 @@ describe("TwilioProvider", () => {
|
|||||||
|
|
||||||
const result = provider.parseWebhookEvent(ctx);
|
const result = provider.parseWebhookEvent(ctx);
|
||||||
|
|
||||||
expect(result.providerResponseBody).toContain(STREAM_URL_PREFIX);
|
expect(result.providerResponseBody).toContain(STREAM_URL);
|
||||||
|
expect(result.providerResponseBody).toContain('<Parameter name="token" value="');
|
||||||
expect(result.providerResponseBody).toContain("<Connect>");
|
expect(result.providerResponseBody).toContain("<Connect>");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ function moveToFinished(session: ProcessSession, status: ProcessStatus) {
|
|||||||
session.child.stderr?.destroy?.();
|
session.child.stderr?.destroy?.();
|
||||||
|
|
||||||
// Remove all event listeners to prevent memory leaks
|
// Remove all event listeners to prevent memory leaks
|
||||||
session.child.removeAllListeners();
|
session.child.removeAllListeners?.();
|
||||||
|
|
||||||
// Clear the reference
|
// Clear the reference
|
||||||
delete session.child;
|
delete session.child;
|
||||||
|
|||||||
@@ -70,9 +70,7 @@ function applyJobResult(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const shouldDelete =
|
const shouldDelete =
|
||||||
job.schedule.kind === "at" &&
|
job.schedule.kind === "at" && job.deleteAfterRun === true && result.status === "ok";
|
||||||
job.deleteAfterRun === true &&
|
|
||||||
(result.status === "ok" || result.status === "skipped");
|
|
||||||
|
|
||||||
if (!shouldDelete) {
|
if (!shouldDelete) {
|
||||||
if (job.schedule.kind === "at") {
|
if (job.schedule.kind === "at") {
|
||||||
|
|||||||
Reference in New Issue
Block a user