MCPcopy
hub / github.com/chartbrew/chartbrew / addDashboardToQueue

Function addDashboardToQueue

server/crons/updateDashboards.js:54–135  ·  view source on GitHub ↗
(queue, dashboard)

Source from the content-addressed store, hash-verified

52}
53
54async function addDashboardToQueue(queue, dashboard) {
55 const dashboardId = dashboard.id;
56 const traceContext = await startRun({
57 triggerType: "dashboard_auto",
58 entityType: "dashboard",
59 status: "queued",
60 teamId: dashboard.team_id || null,
61 projectId: dashboardId,
62 queueName: queue.name,
63 summary: {
64 frequency: dashboard.updateSchedule?.frequency || null,
65 frequencyNumber: dashboard.updateSchedule?.frequencyNumber || null,
66 timezone: dashboard.timezone || dashboard.updateSchedule?.timezone || null,
67 },
68 });
69 const queueEvent = await startEvent(traceContext, "queue_enqueued", {
70 dashboardId,
71 queueName: queue.name,
72 });
73 const candidateJobId = buildJobId("dashboard", dashboardId);
74 try {
75 const job = await queue.add("updateDashboard", {
76 id: dashboardId,
77 traceContext,
78 }, {
79 jobId: candidateJobId,
80 // Keep this in simple mode: enqueue only if no same dedupe key exists.
81 // TTL+extend can starve 1-minute schedules when jobs are repeatedly deduped.
82 deduplication: {
83 id: `dashboard_${dashboardId}`,
84 },
85 });
86
87 const returnedJobId = `${job.id}`;
88 const deduplicated = returnedJobId !== candidateJobId;
89 traceContext.jobId = returnedJobId;
90 traceContext.queueName = queue.name;
91
92 await finishEvent(traceContext, queueEvent, deduplicated ? "deduplicated" : "success", {
93 dashboardId,
94 candidateJobId,
95 returnedJobId,
96 deduplicated,
97 });
98 await updateRunContext(traceContext, {
99 jobId: returnedJobId,
100 queueName: queue.name,
101 status: deduplicated ? "deduplicated" : "queued",
102 });
103
104 if (deduplicated) {
105 await completeRun(traceContext, {
106 status: "deduplicated",
107 summary: {
108 dashboardId,
109 deduplicated: true,
110 candidateJobId,
111 returnedJobId,

Callers 1

updateDashboardsFunction · 0.85

Calls 7

startRunFunction · 0.85
startEventFunction · 0.85
finishEventFunction · 0.85
updateRunContextFunction · 0.85
completeRunFunction · 0.85
failRunFunction · 0.85
buildJobIdFunction · 0.70

Tested by

no test coverage detected