Skip to content

Commit 247ce10

Browse files
authored
Merge pull request #1390 from yuxizhe/feat-timeout-mock
fix(timeout): clear timeout after error occurs
2 parents 83c8b68 + 2f1014c commit 247ce10

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

lib/commands/command.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
const EventEmitter = require('events').EventEmitter;
4+
const Timers = require('timers');
45

56
class Command extends EventEmitter {
67
constructor() {
@@ -27,6 +28,10 @@ class Command extends EventEmitter {
2728
if (packet && packet.isError()) {
2829
const err = packet.asError(connection.clientEncoding);
2930
err.sql = this.sql || this.query;
31+
if (this.queryTimeout) {
32+
Timers.clearTimeout(this.queryTimeout);
33+
this.queryTimeout = null;
34+
}
3035
if (this.onResult) {
3136
this.onResult(err);
3237
this.emit('end');

test/integration/connection/test-query-timeout.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ connection.execute({ sql: 'SELECT sleep(1) as a', timeout: 5000 }, (err, res) =>
3535
assert.deepEqual(res, [{ a: 0 }]);
3636
});
3737

38+
connection.query({ sql: 'select 1 from non_existing_table', timeout: 500 }, (err, res) => {
39+
assert.equal(res, null);
40+
assert.ok(err);
41+
assert.equal(err.code, 'ER_NO_SUCH_TABLE');
42+
});
43+
3844
connection.execute('SELECT sleep(1) as a', (err, res) => {
3945
assert.deepEqual(res, [{ a: 0 }]);
4046
connection.end();

0 commit comments

Comments
 (0)