Compare commits

..

3 Commits

Author SHA1 Message Date
6c72961d12 allow query of donor nodes if allwed by config 2023-10-17 18:10:55 +03:00
1af88c3607 v1.6.8 2023-10-14 13:24:52 +03:00
dbf1283edc bugfix
allow nodes without status to be queried to resolve status
2023-10-14 13:24:41 +03:00
2 changed files with 8 additions and 5 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@navy.gif/wrappers",
"version": "1.6.7",
"version": "1.6.8",
"description": "Various wrapper classes I use in my projects",
"repository": "https://git.corgi.wtf/Navy.gif/wrappers.git",
"author": "Navy.gif",

View File

@ -24,7 +24,8 @@ export type MariaOptions = {
cluster?: PoolClusterConfig,
client?: PoolConfig,
credentials: Credentials,
loggerOptions?: LoggerClientOptions
loggerOptions?: LoggerClientOptions,
donorQuery?: boolean
}
type MariaError = {
@ -93,6 +94,7 @@ class MariaDB
#cluster: boolean;
#pool: PoolCluster | null;
#nodes: Node[];
#canQueryDonor: boolean;
constructor (server: IServer, options: MariaOptions)
{
@ -124,6 +126,7 @@ class MariaDB
this.#afterLastQuery = null;
this.#cluster = this.#credentials.length > 1;
this.#canQueryDonor = options.donorQuery ?? false;
this.#logger = server.createLogger(this, options.loggerOptions);
}
@ -338,7 +341,7 @@ class MariaDB
const pool = this.#pool;
if (nodeName)
{
const available = this.#nodes.filter(n => n.status === 'synced');
const available = this.#nodes.filter(n => n.status === 'synced' || !n.status || (this.#canQueryDonor && n.status === 'donor'));
if (!available.length)
throw new Error('No nodes available for query');
const node = this.#nodes.find(n => n.name === nodeName);
@ -350,7 +353,7 @@ class MariaDB
this.#logger.warn(str);
nodeName = '*';
}
else if (node.status && node.status !== 'synced')
else if (node.status && node.status !== 'synced' && !(this.#canQueryDonor && node.status === 'donor'))
{
const str = `Node ${nodeName} is currently not synced with the pool and thus unqueryable`;
if (throwError)