From 68d5faa96e7452a3b03621735717a58cb12e62c1 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Fri, 2 Feb 2024 13:22:16 -0300 Subject: [PATCH] fix(cache): Fix compression and decompression format mismatch (#27021) --- lib/util/cache/package/file.ts | 2 +- lib/util/cache/package/redis.ts | 2 +- lib/util/compress.spec.ts | 10 ---------- lib/util/compress.ts | 6 ++---- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/util/cache/package/file.ts b/lib/util/cache/package/file.ts index 313f97b1a4..2669478986 100644 --- a/lib/util/cache/package/file.ts +++ b/lib/util/cache/package/file.ts @@ -58,7 +58,7 @@ export async function set( getKey(namespace, key), JSON.stringify({ compress: true, - value: await compressToBase64(value), + value: await compressToBase64(JSON.stringify(value)), expiry: DateTime.local().plus({ minutes: ttlMinutes }), }), ); diff --git a/lib/util/cache/package/redis.ts b/lib/util/cache/package/redis.ts index 1914ea3dca..f1b8603d44 100644 --- a/lib/util/cache/package/redis.ts +++ b/lib/util/cache/package/redis.ts @@ -71,7 +71,7 @@ export async function set( getKey(namespace, key), JSON.stringify({ compress: true, - value: await compressToBase64(value), + value: await compressToBase64(JSON.stringify(value)), expiry: DateTime.local().plus({ minutes: ttlMinutes }), }), { EX: redisTTL }, diff --git a/lib/util/compress.spec.ts b/lib/util/compress.spec.ts index 3c05451d83..79e654d873 100644 --- a/lib/util/compress.spec.ts +++ b/lib/util/compress.spec.ts @@ -10,14 +10,4 @@ describe('util/compress', () => { const decompressed = await decompressFromBase64(compressed); expect(decompressed).toBe(input); }); - - it('compresses objects', async () => { - const input = { foo: 'bar' }; - - const compressed = await compressToBase64(input); - expect(compressed).toBe('CwaAeyJmb28iOiJiYXIifQM='); - - const decompressed = await decompressFromBase64(compressed); - expect(JSON.parse(decompressed)).toEqual(input); - }); }); diff --git a/lib/util/compress.ts b/lib/util/compress.ts index 5a06004247..fc3a0e8bbc 100644 --- a/lib/util/compress.ts +++ b/lib/util/compress.ts @@ -1,6 +1,5 @@ import { promisify } from 'node:util'; import zlib, { constants } from 'node:zlib'; -import is from '@sindresorhus/is'; const brotliCompress = promisify(zlib.brotliCompress); const brotliDecompress = promisify(zlib.brotliDecompress); @@ -8,9 +7,8 @@ const brotliDecompress = promisify(zlib.brotliDecompress); /** * @deprecated */ -export async function compressToBase64(input: unknown): Promise<string> { - const jsonStr = is.string(input) ? input : JSON.stringify(input); - const buf = await brotliCompress(jsonStr, { +export async function compressToBase64(input: string): Promise<string> { + const buf = await brotliCompress(input, { params: { [constants.BROTLI_PARAM_MODE]: constants.BROTLI_MODE_TEXT, [constants.BROTLI_PARAM_QUALITY]: 8, -- GitLab