Skip to content

Commit b48dbb7

Browse files
committed
Client: support 'OR" operator between 'pingInactive' and 'pingWaitRes'
This commit is to fix issue #181. According to https://github.com/mscdex/node-mariasql/blob/master/lib/Client.js#L633 , The protocol-level pings can be enabled by setting both 'pingInactive' and 'pingWaitRes' variablei as following: a. 'pingInactive' to how many milliseconds to wait before sending a ping when no queries are pending, b. AND 'pingWaitRes' to how many milliseconds to wait for a ping response before assuming a lost/dead connection. For example, If you want to check a connection state per 60 seconds, we have to define both 'pingInactive' and pingWaitRes. It means that the "MySQL server has gone away" issue will be always generated in case that we declare the timeout with one between 'pingInactive' and 'pingWaitRes'. Let's support an optional conditional operator instead of "AND" operation conditions. If user does not declared a default timeout, it will be 60 seconds by default. * Example source code: [foo.js] pingInactive: 60000, pingWaitRes: 60000, * Before applying this patch: events.js:160 throw er; // Unhandled 'error' event ^ Error: MySQL server has gone away at Error (native) * How to monitor a sleep time of database on MariaDB server: $ sudo apt-get install mytop [enter] $ mytop -u root -p**** ourjs [enter] MySQL on localhost (10.0.29) load 0.32 0.30 0.26 2/580 9391 up 0+14:33:20 [07:47:10] Queries: 1.7k qps: 0 Slow: 0.0 Se/In/Up/De(%): 02/00/00/00 Sorts: 0 qps now: 1 Slow qps: 0.0 Threads: 3 ( 1/ 2) 00/00/00/00 Key Efficiency: 100.0% Bps in/out: 0.9/127.1 Now in/out: 21.3/ 2.9k Id User Host/IP DB Time Cmd State Query -- ---- ------- -- ---- --- ----- ---------- 754 ourjs localhost:34766 test 38 Sleep $ cat /proc/754/stat $ cat /proc/754/status * How to change a default timeout of Mariadb server: $ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf [mysqld] wait_timeout = 120 (default value is 28800) interactive_timeout = 120 (default value is 28800) Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
1 parent 7000e0c commit b48dbb7

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

lib/Client.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -631,11 +631,18 @@ function pingCb(self) {
631631
self._handle.ping();
632632
}
633633
Client.prototype._ping = function() {
634-
if (this._tmrInactive === undefined
634+
if ((this._tmrInactive === undefined
635635
&& typeof this._config.pingInactive === 'number'
636+
&& this._config.pingInactive > 0)
637+
|| (this._tmrInactive === undefined
636638
&& typeof this._config.pingWaitRes === 'number'
637-
&& this._config.pingInactive > 0
638-
&& this._config.pingWaitRes > 0) {
639+
&& this._config.pingWaitRes > 0)) {
640+
if (this._config.pingInactive === undefined){
641+
this._config.pingInactive = 60000;
642+
}
643+
if (this._config.pingWaitRes === undefined){
644+
this._config.pingWaitRes = 60000;
645+
}
639646
this._tmrInactive = setTimeout(pingCb, this._config.pingInactive, this);
640647
}
641648
};

0 commit comments

Comments
 (0)