Skip to content

Commit 42ac73f

Browse files
authored
Merge pull request #500 from aternosorg/db
handle database error event
2 parents 7bdb3be + b2d2d22 commit 42ac73f

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/Database.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
/**
2-
* @type {import('mysql2/promise.d.ts')}
3-
*/
41
const mysql = require('mysql2/promise');
52
const monitor = require('./Monitor').getInstance();
63
const {Snowflake} = require('discord.js');
@@ -12,6 +9,11 @@ class Database {
129
*/
1310
static #instance;
1411

12+
/**
13+
* @type {import("mysql2").Connection}
14+
*/
15+
con;
16+
1517
/**
1618
* Database constructor
1719
*
@@ -54,13 +56,26 @@ class Database {
5456
async _connect() {
5557
try {
5658
this.con = await mysql.createConnection(this.options);
59+
60+
this.con.on('error', this.#handleConnectionError.bind(this));
61+
5762
for (let waiting of this.waiting) {
5863
waiting.resolve();
5964
}
6065
this.waiting = [];
6166
}
6267
catch (error) {
63-
return this._handleConnectionError(error);
68+
return this.#handleFatalError(error);
69+
}
70+
}
71+
72+
#handleConnectionError(err) {
73+
if (err.fatal) {
74+
this.#handleFatalError(err);
75+
}
76+
else {
77+
console.error('A database error occurred', err);
78+
monitor.error('A database error occurred', err);
6479
}
6580
}
6681

@@ -70,7 +85,7 @@ class Database {
7085
* @param err
7186
* @private
7287
*/
73-
_handleConnectionError(err) {
88+
#handleFatalError(err) {
7489
console.error('A fatal database error occurred', err);
7590
monitor.error('A fatal database error occurred', err);
7691
if (err.code === 'ER_ACCESS_DENIED_ERROR') {
@@ -79,10 +94,6 @@ class Database {
7994
}
8095

8196
this.con = null;
82-
for (let waiting of this.waiting) {
83-
waiting.reject(err);
84-
}
85-
this.waiting = [];
8697
setTimeout(this._connect.bind(this), 5000);
8798
}
8899

0 commit comments

Comments
 (0)