From 54dc7afaf5b9947beb45824fc2ae8d26999bfc78 Mon Sep 17 00:00:00 2001 From: "Brian M. Carlson" Date: Mon, 12 Aug 2024 16:14:08 -0400 Subject: [PATCH] Update code to use handle error event --- packages/pg/lib/client.js | 3 ++- .../pg/test/integration/gh-issues/3174-tests.js | 17 +++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/pg/lib/client.js b/packages/pg/lib/client.js index 22bded0e2..637b2f4b3 100644 --- a/packages/pg/lib/client.js +++ b/packages/pg/lib/client.js @@ -383,7 +383,8 @@ class Client extends EventEmitter { _handleParseComplete() { if (this.activeQuery == null) { - this.emit('error', new Error('Received parseComplete when not in parsing state')) + const error =new Error('Received parseComplete when not in parsing state') + this._handleErrorEvent(error) return } // if a prepared statement has a name and properly parses diff --git a/packages/pg/test/integration/gh-issues/3174-tests.js b/packages/pg/test/integration/gh-issues/3174-tests.js index bfef61245..bce3e755e 100644 --- a/packages/pg/test/integration/gh-issues/3174-tests.js +++ b/packages/pg/test/integration/gh-issues/3174-tests.js @@ -95,15 +95,13 @@ suite.testAsync('Out of order parseComplete on simple query is catchable', async errorHit = true }) - await client.query('SELECT NOW') + await client.query('SELECT NOW()') await delay(50) - await client.query('SELECT NOW') - await delay(50) - await client.query('SELECT NOW') - await delay(50) - await client.end() assert(cli.native || errorHit) + // further queries on the client should fail since its in an invalid state + await assert.rejects(() => client.query('SELECTR NOW()'), 'Further queries on the client should reject') + await closeServer() }) @@ -122,6 +120,10 @@ suite.testAsync('Out of order parseComplete on extended query is catchable', asy await client.query('SELECT $1', ['foo']) await delay(40) assert(cli.native || errorHit) + + // further queries on the client should fail since its in an invalid state + await assert.rejects(() => client.query('SELECTR NOW()'), 'Further queries on the client should reject') + await client.end() await closeServer() @@ -142,6 +144,9 @@ suite.testAsync('Out of order parseComplete on pool is catchable', async () => { await delay(100) assert(cli.native || errorHit) + assert.strictEqual(pool.idleCount, 0, 'Pool should have no idle clients') + assert.strictEqual(pool.totalCount, 0, 'Pool should have no connected clients') + await pool.end() await closeServer() })