Deno found a memory leak #538
-
Hi! I would like to use zip.js library in my project. Function called in test: export const compressFiles = (
filesToCompress: File[],
name: string,
): ResultAsync<File, Error> => {
const zip = new ZipWriter(new BlobWriter("application/zip"));
const operations: ResultAsync<EntryMetaData, Error>[] = [];
filesToCompress.forEach((file) => {
operations.push(
ResultAsync.fromPromise(
zip.add(file.name, file.stream()),
(error) => ensureError(error),
),
);
});
return ResultAsync.combine(operations).andThen(() =>
ResultAsync.fromPromise(
zip.close(undefined),
(error) => ensureError(error),
)
.andThen((blob) => {
return okAsync(new File([blob], name, { type: "application/zip" }));
})
);
}; Test code: describe.only("test", () => {
it("should zip a file", async () => {
await Lufi.compressFiles([file117kb], "test.zip").andThen((file) => {
console.debug(file);
return okAsync(undefined);
});
});
}); Console logs Upload => https://jsr.io/@std/testing/1.0.3/_test_suite.ts:212:10
error: Leaks detected:
- A timer was started in this test, but never completed. This is often caused by not calling `clearTimeout`. The operation was started here:
at Object.queueUserTimer (ext:core/01_core.js:773:9)
at setTimeout (ext:deno_web/02_timers.js:74:15)
at Timeout.<computed> (ext:deno_node/internal/timers.mjs:68:7)
at new Timeout (ext:deno_node/internal/timers.mjs:55:37)
at setTimeout (node:timers:13:10)
at terminateWorker (file:///home/booteille/Dev/lufi-api/node_modules/.deno/@[email protected]/node_modules/@zip.js/zip.js/lib/core/codec-pool.js:102:34)
at onTaskFinished (file:///home/booteille/Dev/lufi-api/node_modules/.deno/@[email protected]/node_modules/@zip.js/zip.js/lib/core/codec-pool.js:88:4)
at onTaskFinished (file:///home/booteille/Dev/lufi-api/node_modules/.deno/@[email protected]/node_modules/@zip.js/zip.js/lib/core/codec-worker.js:91:5)
at close (file:///home/booteille/Dev/lufi-api/node_modules/.deno/@[email protected]/node_modules/@zip.js/zip.js/lib/core/codec-worker.js:346:3)
at onMessage (file:///home/booteille/Dev/lufi-api/node_modules/.deno/@[email protected]/node_modules/@zip.js/zip.js/lib/core/codec-worker.js:329:5) I guess there is an issue either with the library either with deno. Thanks. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
You need to call |
Beta Was this translation helpful? Give feedback.
-
@gildas-lormeau same problem with |
Beta Was this translation helpful? Give feedback.
You need to call
await zip.terminateWorkers()
to stop the web workers used to compress data before the end of the execution.