From 56296b66ec66ee45fe9cc25669295280c181fccc Mon Sep 17 00:00:00 2001 From: wellwelwel <46850407+wellwelwel@users.noreply.github.com> Date: Fri, 23 Aug 2024 20:53:52 -0300 Subject: [PATCH 1/5] fix: resolve LRU conflicts and unintentional engine breaking change --- lib/connection.js | 8 +++--- lib/parsers/parser_cache.js | 6 ++--- lib/parsers/string.js | 4 +-- package-lock.json | 27 ++++++++++++------- package.json | 2 +- .../connection/test-execute-cached.test.cjs | 2 +- 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/lib/connection.js b/lib/connection.js index 113fc7d46c..24be9451a3 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -22,7 +22,7 @@ const EventEmitter = require('events').EventEmitter; const Readable = require('stream').Readable; const Queue = require('denque'); const SqlString = require('sqlstring'); -const LRU = require('lru-cache').default; +const { createLRU } = require('lru.min'); const PacketParser = require('./packet_parser.js'); const Packets = require('./packets/index.js'); @@ -75,7 +75,7 @@ class Connection extends EventEmitter { this._command = null; this._paused = false; this._paused_packets = new Queue(); - this._statements = new LRU({ + this._statements = createLRU({ max: this.config.maxPreparedStatements, dispose: function(statement) { statement.close(); @@ -411,7 +411,7 @@ class Connection extends EventEmitter { err.code = code || 'PROTOCOL_ERROR'; this.emit('error', err); } - + get fatalError() { return this._fatalError; } @@ -611,7 +611,7 @@ class Connection extends EventEmitter { const key = Connection.statementKey(options); const stmt = this._statements.get(key); if (stmt) { - this._statements.delete(key); + this._statements.del(key); stmt.close(); } return stmt; diff --git a/lib/parsers/parser_cache.js b/lib/parsers/parser_cache.js index d85fabecce..2dd6891d91 100644 --- a/lib/parsers/parser_cache.js +++ b/lib/parsers/parser_cache.js @@ -1,8 +1,8 @@ 'use strict'; -const LRU = require('lru-cache').default; +const { createLRU } = require('lru.min'); -let parserCache = new LRU({ +const parserCache = createLRU({ max: 15000, }); @@ -51,7 +51,7 @@ function getParser(type, fields, options, config, compiler) { } function setMaxCache(max) { - parserCache = new LRU({ max }); + parserCache.resize(max); } function clearCache() { diff --git a/lib/parsers/string.js b/lib/parsers/string.js index 47c9bfa8a0..2368e5046c 100644 --- a/lib/parsers/string.js +++ b/lib/parsers/string.js @@ -1,9 +1,9 @@ 'use strict'; const Iconv = require('iconv-lite'); -const LRU = require('lru-cache').default; +const { createLRU } = require('lru.min'); -const decoderCache = new LRU({ +const decoderCache = createLRU({ max: 500, }); diff --git a/package-lock.json b/package-lock.json index aaba6ee19f..eda720d78e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^0.1.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -2156,12 +2156,19 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/lru-cache": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.4.tgz", - "integrity": "sha512-E9FF6+Oc/uFLqZCuZwRKUzgFt5Raih6LfxknOSAVTjNkrCZkBf7DQCwJxZQgd9l4eHjIJDGR+E+1QKD1RhThPw==", + "node_modules/lru.min": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.1.0.tgz", + "integrity": "sha512-mT46uWDX25swxbtduLmiyycUCto8u2qQLgZDDq2NR+N9pXzlgJ/ca2eKTc8hWKnAnlxNclgcAVNSc8TnrLA+2w==", + "license": "MIT", "engines": { - "node": ">=16.14" + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" } }, "node_modules/make-dir": { @@ -4944,10 +4951,10 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "lru-cache": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.4.tgz", - "integrity": "sha512-E9FF6+Oc/uFLqZCuZwRKUzgFt5Raih6LfxknOSAVTjNkrCZkBf7DQCwJxZQgd9l4eHjIJDGR+E+1QKD1RhThPw==" + "lru.min": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.1.0.tgz", + "integrity": "sha512-mT46uWDX25swxbtduLmiyycUCto8u2qQLgZDDq2NR+N9pXzlgJ/ca2eKTc8hWKnAnlxNclgcAVNSc8TnrLA+2w==" }, "make-dir": { "version": "4.0.0", diff --git a/package.json b/package.json index a409638902..baa5fec576 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^0.1.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" diff --git a/test/integration/connection/test-execute-cached.test.cjs b/test/integration/connection/test-execute-cached.test.cjs index b61dc65479..8e7531b60c 100644 --- a/test/integration/connection/test-execute-cached.test.cjs +++ b/test/integration/connection/test-execute-cached.test.cjs @@ -28,7 +28,7 @@ connection.execute(q, [123], (err, _rows) => { throw err; } rows2 = _rows; - assert(connection._statements.size === 1); + assert(connection._statements.stored() === 1); assert(connection._statements.get(key).query === q); assert(connection._statements.get(key).parameters.length === 1); connection.end(); From 02024fbd5595320e9391ea4179924d20d794ad78 Mon Sep 17 00:00:00 2001 From: wellwelwel <46850407+wellwelwel@users.noreply.github.com> Date: Mon, 26 Aug 2024 08:15:25 -0300 Subject: [PATCH 2/5] chore: update lru.min --- lib/connection.js | 4 ++-- package-lock.json | 14 +++++++------- package.json | 2 +- .../connection/test-execute-cached.test.cjs | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/connection.js b/lib/connection.js index 24be9451a3..af6b3d9d68 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -77,7 +77,7 @@ class Connection extends EventEmitter { this._paused_packets = new Queue(); this._statements = createLRU({ max: this.config.maxPreparedStatements, - dispose: function(statement) { + onEviction: function(_, statement) { statement.close(); } }); @@ -611,7 +611,7 @@ class Connection extends EventEmitter { const key = Connection.statementKey(options); const stmt = this._statements.get(key); if (stmt) { - this._statements.del(key); + this._statements.delete(key); stmt.close(); } return stmt; diff --git a/package-lock.json b/package-lock.json index eda720d78e..6a1d58d5e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.1.0", + "lru.min": "^0.2.3", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -2157,9 +2157,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/lru.min": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.1.0.tgz", - "integrity": "sha512-mT46uWDX25swxbtduLmiyycUCto8u2qQLgZDDq2NR+N9pXzlgJ/ca2eKTc8hWKnAnlxNclgcAVNSc8TnrLA+2w==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.2.3.tgz", + "integrity": "sha512-DPmeNBgjmeymlEnxeFnG+AZFYSyP2B/Akf409HWjanYgiuIDVCgoXuuo4O2v0g9PtfWdDO+G5sxNqVUzNL0rwg==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -4952,9 +4952,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "lru.min": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.1.0.tgz", - "integrity": "sha512-mT46uWDX25swxbtduLmiyycUCto8u2qQLgZDDq2NR+N9pXzlgJ/ca2eKTc8hWKnAnlxNclgcAVNSc8TnrLA+2w==" + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.2.3.tgz", + "integrity": "sha512-DPmeNBgjmeymlEnxeFnG+AZFYSyP2B/Akf409HWjanYgiuIDVCgoXuuo4O2v0g9PtfWdDO+G5sxNqVUzNL0rwg==" }, "make-dir": { "version": "4.0.0", diff --git a/package.json b/package.json index baa5fec576..947dcaef39 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.1.0", + "lru.min": "^0.2.3", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" diff --git a/test/integration/connection/test-execute-cached.test.cjs b/test/integration/connection/test-execute-cached.test.cjs index 8e7531b60c..b61dc65479 100644 --- a/test/integration/connection/test-execute-cached.test.cjs +++ b/test/integration/connection/test-execute-cached.test.cjs @@ -28,7 +28,7 @@ connection.execute(q, [123], (err, _rows) => { throw err; } rows2 = _rows; - assert(connection._statements.stored() === 1); + assert(connection._statements.size === 1); assert(connection._statements.get(key).query === q); assert(connection._statements.get(key).parameters.length === 1); connection.end(); From a7a7658895eb9770c9aaa76b8a7d7fa04d826332 Mon Sep 17 00:00:00 2001 From: wellwelwel <46850407+wellwelwel@users.noreply.github.com> Date: Tue, 27 Aug 2024 02:01:42 -0300 Subject: [PATCH 3/5] chore: update lru.min --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a1d58d5e7..811fc063d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.2.3", + "lru.min": "^0.3.1", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -2157,9 +2157,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/lru.min": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.2.3.tgz", - "integrity": "sha512-DPmeNBgjmeymlEnxeFnG+AZFYSyP2B/Akf409HWjanYgiuIDVCgoXuuo4O2v0g9PtfWdDO+G5sxNqVUzNL0rwg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.1.tgz", + "integrity": "sha512-Q0f9iCCN2qjRVDTxZ80joyr5Tv9WUAWY8nLKXFC1VnNcBxY4GJMiEutqVt0K1nuxBuVNeXhcm3Zi/ZuCP29zug==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -4952,9 +4952,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "lru.min": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.2.3.tgz", - "integrity": "sha512-DPmeNBgjmeymlEnxeFnG+AZFYSyP2B/Akf409HWjanYgiuIDVCgoXuuo4O2v0g9PtfWdDO+G5sxNqVUzNL0rwg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.1.tgz", + "integrity": "sha512-Q0f9iCCN2qjRVDTxZ80joyr5Tv9WUAWY8nLKXFC1VnNcBxY4GJMiEutqVt0K1nuxBuVNeXhcm3Zi/ZuCP29zug==" }, "make-dir": { "version": "4.0.0", diff --git a/package.json b/package.json index 947dcaef39..501679d54b 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.2.3", + "lru.min": "^0.3.1", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" From 6ecf2ff2176452b4d15cd4d27a510bb2027cd2ec Mon Sep 17 00:00:00 2001 From: wellwelwel <46850407+wellwelwel@users.noreply.github.com> Date: Tue, 27 Aug 2024 06:08:20 -0300 Subject: [PATCH 4/5] chore: update lru.min --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 811fc063d8..98023759cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.3.1", + "lru.min": "^0.3.2", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -2157,9 +2157,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/lru.min": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.1.tgz", - "integrity": "sha512-Q0f9iCCN2qjRVDTxZ80joyr5Tv9WUAWY8nLKXFC1VnNcBxY4GJMiEutqVt0K1nuxBuVNeXhcm3Zi/ZuCP29zug==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.2.tgz", + "integrity": "sha512-u2fhvG85ThKP3yxnjoWY79FjJbSwepsDuCL5D9CgGEeHCZhZ2UY32wjYDaaXOEplC6Qow9C96ZxW/Mk7TFN8QQ==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -4952,9 +4952,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "lru.min": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.1.tgz", - "integrity": "sha512-Q0f9iCCN2qjRVDTxZ80joyr5Tv9WUAWY8nLKXFC1VnNcBxY4GJMiEutqVt0K1nuxBuVNeXhcm3Zi/ZuCP29zug==" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.2.tgz", + "integrity": "sha512-u2fhvG85ThKP3yxnjoWY79FjJbSwepsDuCL5D9CgGEeHCZhZ2UY32wjYDaaXOEplC6Qow9C96ZxW/Mk7TFN8QQ==" }, "make-dir": { "version": "4.0.0", diff --git a/package.json b/package.json index 501679d54b..b783046d67 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.3.1", + "lru.min": "^0.3.2", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" From babca6c4d453cf6aa42bd718467792974da533e7 Mon Sep 17 00:00:00 2001 From: wellwelwel <46850407+wellwelwel@users.noreply.github.com> Date: Tue, 27 Aug 2024 07:02:59 -0300 Subject: [PATCH 5/5] chore: update lru.min --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98023759cf..218446eeb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.3.2", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -2157,9 +2157,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/lru.min": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.2.tgz", - "integrity": "sha512-u2fhvG85ThKP3yxnjoWY79FjJbSwepsDuCL5D9CgGEeHCZhZ2UY32wjYDaaXOEplC6Qow9C96ZxW/Mk7TFN8QQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.0.0.tgz", + "integrity": "sha512-YthLl3hdewA3lIwPrpgDLNlq6bvgbZjJQR4qr6oQ2c6lC78sCOwJkn0AkuUArbydQNQ+PjwIVz9IwZNrmLhXeg==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -4952,9 +4952,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "lru.min": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-0.3.2.tgz", - "integrity": "sha512-u2fhvG85ThKP3yxnjoWY79FjJbSwepsDuCL5D9CgGEeHCZhZ2UY32wjYDaaXOEplC6Qow9C96ZxW/Mk7TFN8QQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.0.0.tgz", + "integrity": "sha512-YthLl3hdewA3lIwPrpgDLNlq6bvgbZjJQR4qr6oQ2c6lC78sCOwJkn0AkuUArbydQNQ+PjwIVz9IwZNrmLhXeg==" }, "make-dir": { "version": "4.0.0", diff --git a/package.json b/package.json index b783046d67..0ee7fc343b 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru.min": "^0.3.2", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2"