feature/IO-3052-Skia-Canvas-Handler: Fix missing checks
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -77,21 +77,36 @@ const processCanvasRequest = async (req, res, isSkia = false) => {
|
|||||||
|
|
||||||
const configuration = getChartConfiguration(keys, values, override);
|
const configuration = getChartConfiguration(keys, values, override);
|
||||||
|
|
||||||
|
// Placeholders to allow fine control over GAC
|
||||||
|
let canvas = null;
|
||||||
|
let ctx = null;
|
||||||
|
let chart = null;
|
||||||
|
let chartImage = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const canvas = isSkia ? new Canvas(width, height) : createCanvas(width, height);
|
// Create the canvas
|
||||||
const ctx = canvas.getContext("2d");
|
canvas = isSkia ? new Canvas(width, height) : createCanvas(width, height);
|
||||||
|
ctx = canvas.getContext("2d");
|
||||||
|
|
||||||
// Render the chart
|
// Render the chart
|
||||||
const chart = new Chart(ctx, configuration);
|
chart = new Chart(ctx, configuration);
|
||||||
|
|
||||||
// Generate and send the image
|
// Generate and send the image
|
||||||
const chartImage = isSkia ? (await canvas.toBuffer("image/png")).toString("base64") : canvas.toDataURL();
|
chartImage = isSkia ? (await canvas.toBuffer("image/png")).toString("base64") : canvas.toDataURL();
|
||||||
|
|
||||||
chart.destroy();
|
|
||||||
res.status(200).send(isSkia ? `data:image/png;base64,${chartImage}` : chartImage);
|
res.status(200).send(isSkia ? `data:image/png;base64,${chartImage}` : chartImage);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// Log the error and send the response
|
||||||
logger.log("canvas-error", "error", "jsr", null, { error: error.message });
|
logger.log("canvas-error", "error", "jsr", null, { error: error.message });
|
||||||
res.status(500).send("Failed to generate canvas.");
|
res.status(500).send("Failed to generate canvas.");
|
||||||
|
} finally {
|
||||||
|
// Cleanup resources
|
||||||
|
if (chart) {
|
||||||
|
chart.destroy();
|
||||||
|
}
|
||||||
|
ctx = null; // Explicitly nullify for garbage collection
|
||||||
|
canvas = null; // Explicitly nullify for garbage collection
|
||||||
|
chartImage = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user