From 2ce1e76b72584a5229e9d13a589ff4723736da27 Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Wed, 30 Sep 2020 16:41:55 +0100 Subject: [PATCH] Loop through Wasm re-init for issue repro --- codecs/oxipng/spawn.ts | 7 ++++++- src/codecs/oxipng/encoder.ts | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/codecs/oxipng/spawn.ts b/codecs/oxipng/spawn.ts index 59293615..14b1c1b4 100644 --- a/codecs/oxipng/spawn.ts +++ b/codecs/oxipng/spawn.ts @@ -54,7 +54,12 @@ async function startMainThread() { return { optimise, + freeWorkers: () => { + for (const worker of resolvedWorkers) { + worker.terminate(); + } + }, }; } -export default startMainThread(); +export default () => startMainThread(); diff --git a/src/codecs/oxipng/encoder.ts b/src/codecs/oxipng/encoder.ts index ac54dd89..3232ea67 100644 --- a/src/codecs/oxipng/encoder.ts +++ b/src/codecs/oxipng/encoder.ts @@ -1,7 +1,12 @@ // @ts-ignore -import optimiser from '../../../codecs/oxipng'; +import init from '../../../codecs/oxipng/spawn'; import { EncodeOptions } from './encoder-meta'; export async function compress(data: ArrayBuffer, options: EncodeOptions): Promise { - return (await optimiser).optimise(new Uint8Array(data), options.level).buffer; + for (let i = 0; i < 100; i += 1) { + const optimiser = await init(); + console.log(`Run #${i}: ${optimiser.optimise(new Uint8Array(data), options.level).buffer.byteLength} bytes`); + optimiser.freeWorkers(); + } + return (await init()).optimise(new Uint8Array(data), options.level).buffer; }