Skip to content

Commit 0b9dc3a

Browse files
authored
Merge pull request #3811 from Dokploy/3332-zombie-processes-from-failed-log-cleanup
refactor: improve error handling and logging in cron job setup for ba…
2 parents 345023f + f862826 commit 0b9dc3a

2 files changed

Lines changed: 47 additions & 28 deletions

File tree

packages/server/src/utils/access-log/handler.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import fs from "node:fs";
2+
import path from "node:path";
13
import { paths } from "@dokploy/server/constants";
24
import {
35
getWebServerSettings,
@@ -12,19 +14,24 @@ export const startLogCleanup = async (
1214
cronExpression = "0 0 * * *",
1315
): Promise<boolean> => {
1416
try {
15-
const { DYNAMIC_TRAEFIK_PATH } = paths();
16-
1717
const existingJob = scheduledJobs[LOG_CLEANUP_JOB_NAME];
1818
if (existingJob) {
1919
existingJob.cancel();
2020
}
2121

2222
scheduleJob(LOG_CLEANUP_JOB_NAME, cronExpression, async () => {
2323
try {
24+
const { DYNAMIC_TRAEFIK_PATH } = paths();
25+
const accessLogPath = path.join(DYNAMIC_TRAEFIK_PATH, "access.log");
26+
27+
if (!fs.existsSync(accessLogPath)) {
28+
console.error("Access log file does not exist");
29+
return;
30+
}
31+
2432
await execAsync(
25-
`tail -n 1000 ${DYNAMIC_TRAEFIK_PATH}/access.log > ${DYNAMIC_TRAEFIK_PATH}/access.log.tmp && mv ${DYNAMIC_TRAEFIK_PATH}/access.log.tmp ${DYNAMIC_TRAEFIK_PATH}/access.log`,
33+
`tail -n 1000 ${accessLogPath} > ${accessLogPath}.tmp && mv ${accessLogPath}.tmp ${accessLogPath}`,
2634
);
27-
2835
await execAsync("docker exec dokploy-traefik kill -USR1 1");
2936
} catch (error) {
3037
console.error("Error during log cleanup:", error);

packages/server/src/utils/backups/index.ts

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -30,34 +30,42 @@ export const initCronJobs = async () => {
3030
const webServerSettings = await getWebServerSettings();
3131

3232
if (webServerSettings?.enableDockerCleanup) {
33-
scheduleJob("docker-cleanup", CLEANUP_CRON_JOB, async () => {
34-
console.log(
35-
`Docker Cleanup ${new Date().toLocaleString()}] Running docker cleanup`,
36-
);
33+
try {
34+
scheduleJob("docker-cleanup", CLEANUP_CRON_JOB, async () => {
35+
console.log(
36+
`Docker Cleanup ${new Date().toLocaleString()}] Running docker cleanup`,
37+
);
3738

38-
await cleanupAll();
39+
await cleanupAll();
3940

40-
await sendDockerCleanupNotifications(admin.user.id);
41-
});
41+
await sendDockerCleanupNotifications(admin.user.id);
42+
});
43+
} catch (error) {
44+
console.error("[Backup] Docker Cleanup Error", error);
45+
}
4246
}
4347

4448
const servers = await getAllServers();
4549

4650
for (const server of servers) {
4751
const { serverId, enableDockerCleanup, name } = server;
4852
if (enableDockerCleanup) {
49-
scheduleJob(serverId, CLEANUP_CRON_JOB, async () => {
50-
console.log(
51-
`SERVER-BACKUP[${new Date().toLocaleString()}] Running Cleanup ${name}`,
52-
);
53-
54-
await cleanupAll(serverId);
55-
56-
await sendDockerCleanupNotifications(
57-
admin.user.id,
58-
`Docker cleanup for Server ${name} (${serverId})`,
59-
);
60-
});
53+
try {
54+
scheduleJob(serverId, CLEANUP_CRON_JOB, async () => {
55+
console.log(
56+
`SERVER-BACKUP[${new Date().toLocaleString()}] Running Cleanup ${name}`,
57+
);
58+
59+
await cleanupAll(serverId);
60+
61+
await sendDockerCleanupNotifications(
62+
admin.user.id,
63+
`Docker cleanup for Server ${name} (${serverId})`,
64+
);
65+
});
66+
} catch (error) {
67+
console.error(`[Backup] ${error}`);
68+
}
6169
}
6270
}
6371

@@ -87,11 +95,15 @@ export const initCronJobs = async () => {
8795
}
8896

8997
if (webServerSettings?.logCleanupCron) {
90-
console.log(
91-
"Starting log requests cleanup",
92-
webServerSettings.logCleanupCron,
93-
);
94-
await startLogCleanup(webServerSettings.logCleanupCron);
98+
try {
99+
console.log(
100+
"Starting log requests cleanup",
101+
webServerSettings.logCleanupCron,
102+
);
103+
await startLogCleanup(webServerSettings.logCleanupCron);
104+
} catch (error) {
105+
console.error("[Backup] Log Cleanup Error", error);
106+
}
95107
}
96108
};
97109

0 commit comments

Comments
 (0)