@breautek/storm 8.0.0 → 8.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Database.d.ts +3 -2
- package/lib/Database.js +2 -2
- package/lib/Database.js.map +1 -1
- package/lib/DatabaseConnection.d.ts +5 -0
- package/lib/DatabaseConnection.js.map +1 -1
- package/lib/IDatabaseConnection.d.ts +5 -0
- package/lib/IDatabasePosition.d.ts +7 -0
- package/lib/IDatabasePosition.js +18 -0
- package/lib/IDatabasePosition.js.map +1 -0
- package/lib/ManagedDatabaseConnection.d.ts +2 -0
- package/lib/ManagedDatabaseConnection.js +4 -0
- package/lib/ManagedDatabaseConnection.js.map +1 -1
- package/lib/MySQLConnection.d.ts +9 -0
- package/lib/MySQLConnection.js +20 -0
- package/lib/MySQLConnection.js.map +1 -1
- package/lib/MySQLDatabase.d.ts +3 -1
- package/lib/MySQLDatabase.js +26 -3
- package/lib/MySQLDatabase.js.map +1 -1
- package/lib/TimeoutError.d.ts +13 -0
- package/lib/TimeoutError.js +43 -0
- package/lib/TimeoutError.js.map +1 -0
- package/lib/api.d.ts +2 -0
- package/lib/api.js +4 -2
- package/lib/api.js.map +1 -1
- package/lib/private/ConnectionReplicationWaiter.d.ts +24 -0
- package/lib/private/ConnectionReplicationWaiter.js +92 -0
- package/lib/private/ConnectionReplicationWaiter.js.map +1 -0
- package/lib/private/GetBinLogPositionQuery.d.ts +12 -0
- package/lib/private/GetBinLogPositionQuery.js +49 -0
- package/lib/private/GetBinLogPositionQuery.js.map +1 -0
- package/lib/private/GetMasterPositionQuery.d.ts +11 -0
- package/lib/private/GetMasterPositionQuery.js +32 -0
- package/lib/private/GetMasterPositionQuery.js.map +1 -0
- package/lib/private/GetSlavePositionQuery.d.ts +11 -0
- package/lib/private/GetSlavePositionQuery.js +32 -0
- package/lib/private/GetSlavePositionQuery.js.map +1 -0
- package/package.json +10 -10
- package/src/Database.ts +4 -3
- package/src/DatabaseConnection.ts +6 -0
- package/src/IDatabaseConnection.ts +6 -0
- package/src/IDatabasePosition.ts +23 -0
- package/src/ManagedDatabaseConnection.ts +6 -0
- package/src/MySQLConnection.ts +27 -0
- package/src/MySQLDatabase.ts +32 -4
- package/src/TimeoutError.ts +44 -0
- package/src/api.ts +2 -0
- package/src/private/ConnectionReplicationWaiter.ts +110 -0
- package/src/private/GetBinLogPositionQuery.ts +59 -0
- package/src/private/GetMasterPositionQuery.ts +37 -0
- package/src/private/GetSlavePositionQuery.ts +37 -0
package/lib/Database.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DatabaseConnection } from './DatabaseConnection';
|
|
2
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
2
3
|
export declare abstract class Database<TDatabaseConfig, TConnectionAPI> {
|
|
3
4
|
private $clusterConfigMap;
|
|
4
5
|
constructor();
|
|
@@ -6,11 +7,11 @@ export declare abstract class Database<TDatabaseConfig, TConnectionAPI> {
|
|
|
6
7
|
removeMaster(): void;
|
|
7
8
|
addSlave(slaveID: string, config: TDatabaseConfig): string;
|
|
8
9
|
removeSlave(slaveID: string): void;
|
|
9
|
-
getConnection(requireWriteAccess?: boolean, nodeID?: string): Promise<DatabaseConnection<TConnectionAPI>>;
|
|
10
|
+
getConnection(requireWriteAccess?: boolean, nodeID?: string, requiredPosition?: IDatabasePosition): Promise<DatabaseConnection<TConnectionAPI>>;
|
|
10
11
|
destroy(): Promise<void>;
|
|
11
12
|
protected abstract _destroy(): Promise<void>;
|
|
12
13
|
protected abstract _addNode(name: string, config: TDatabaseConfig): void;
|
|
13
14
|
protected abstract _removeNode(name: string): void;
|
|
14
|
-
protected abstract _getConnection(query: string, requireWriteAccess: boolean): Promise<DatabaseConnection<TConnectionAPI>>;
|
|
15
|
+
protected abstract _getConnection(query: string, requireWriteAccess: boolean, requiredPosition?: IDatabasePosition): Promise<DatabaseConnection<TConnectionAPI>>;
|
|
15
16
|
abstract escape(query: string): string;
|
|
16
17
|
}
|
package/lib/Database.js
CHANGED
|
@@ -50,7 +50,7 @@ class Database {
|
|
|
50
50
|
delete this.$clusterConfigMap[slaveID];
|
|
51
51
|
this._removeNode(slaveID);
|
|
52
52
|
}
|
|
53
|
-
getConnection(requireWriteAccess = false, nodeID) {
|
|
53
|
+
getConnection(requireWriteAccess = false, nodeID, requiredPosition) {
|
|
54
54
|
let query = 'SLAVE*';
|
|
55
55
|
if (nodeID) {
|
|
56
56
|
query = nodeID;
|
|
@@ -58,7 +58,7 @@ class Database {
|
|
|
58
58
|
else if (requireWriteAccess) {
|
|
59
59
|
query = 'MASTER';
|
|
60
60
|
}
|
|
61
|
-
return this._getConnection(query, requireWriteAccess);
|
|
61
|
+
return this._getConnection(query, requireWriteAccess, requiredPosition);
|
|
62
62
|
}
|
|
63
63
|
destroy() {
|
|
64
64
|
return this._destroy();
|
package/lib/Database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../src/Database.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;AAEF,mDAA6B;AAE7B,yCAAyC;
|
|
1
|
+
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../src/Database.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;AAEF,mDAA6B;AAE7B,yCAAyC;AAGzC,MAAM,WAAW,GAAW,QAAQ,CAAC;AACrC,MAAM,GAAG,GAAW,UAAU,CAAC;AAE/B,MAAsB,QAAQ;IAG1B;QACI,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAChC,CAAC;IAEM,SAAS,CAAC,MAAuB;QACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,mBAAmB,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAEM,QAAQ,CAAC,OAAe,EAAE,MAAuB;QACpD,IAAI,EAAE,GAAG,SAAS,IAAI,CAAC,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC;QAEzC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE1B,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,OAAe;QAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,OAAO,iCAAiC,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,aAAa,CAAC,qBAA8B,KAAK,EAAE,MAAe,EAAE,gBAAoC;QAC3G,IAAI,KAAK,GAAW,QAAQ,CAAC;QAE7B,IAAI,MAAM,EAAE,CAAC;YACT,KAAK,GAAG,MAAM,CAAC;QACnB,CAAC;aACI,IAAI,kBAAkB,EAAE,CAAC;YAC1B,KAAK,GAAG,QAAQ,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAC5E,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CAOJ;AA9DD,4BA8DC"}
|
|
@@ -3,6 +3,7 @@ import { Readable } from 'stream';
|
|
|
3
3
|
import { IDatabaseConnection } from './IDatabaseConnection';
|
|
4
4
|
import { IQueryable } from './IQueryable';
|
|
5
5
|
import { IsolationLevel } from './IsolationLevel';
|
|
6
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
6
7
|
export declare const LINGER_WARNING: number;
|
|
7
8
|
export declare const DEFAULT_QUERY_TIMEOUT: number;
|
|
8
9
|
/**
|
|
@@ -148,4 +149,8 @@ export declare abstract class DatabaseConnection<TAPI> implements IDatabaseConne
|
|
|
148
149
|
* @returns `Readable`
|
|
149
150
|
*/
|
|
150
151
|
protected abstract _stream(query: string, params?: any, streamOptions?: any): Readable;
|
|
152
|
+
/**
|
|
153
|
+
* @since 8.1.0
|
|
154
|
+
*/
|
|
155
|
+
abstract getCurrentDatabasePosition(): Promise<IDatabasePosition>;
|
|
151
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseConnection.js","sourceRoot":"","sources":["../src/DatabaseConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,yCAEoB;
|
|
1
|
+
{"version":3,"file":"DatabaseConnection.js","sourceRoot":"","sources":["../src/DatabaseConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Readable } from 'stream';
|
|
3
3
|
import { IQueryable } from './IQueryable';
|
|
4
4
|
import { IsolationLevel } from './IsolationLevel';
|
|
5
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
5
6
|
export interface IDatabaseConnection {
|
|
6
7
|
setInstantiationStack(stack: string): void;
|
|
7
8
|
getInstantiationStack(): string;
|
|
@@ -17,4 +18,8 @@ export interface IDatabaseConnection {
|
|
|
17
18
|
isTransaction(): boolean;
|
|
18
19
|
commit(): Promise<void>;
|
|
19
20
|
rollback(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* @since 8.1.0
|
|
23
|
+
*/
|
|
24
|
+
getCurrentDatabasePosition(): Promise<IDatabasePosition>;
|
|
20
25
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2024 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
//# sourceMappingURL=IDatabasePosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDatabasePosition.js","sourceRoot":"","sources":["../src/IDatabasePosition.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE"}
|
|
@@ -3,6 +3,7 @@ import { IDatabaseConnection } from './IDatabaseConnection';
|
|
|
3
3
|
import { Readable } from 'stream';
|
|
4
4
|
import { Query } from './Query';
|
|
5
5
|
import { IsolationLevel } from './IsolationLevel';
|
|
6
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
6
7
|
export declare class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
7
8
|
private $connection;
|
|
8
9
|
/**
|
|
@@ -16,6 +17,7 @@ export declare class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
|
16
17
|
constructor(requiresWrite?: boolean);
|
|
17
18
|
setConnection(connection: IDatabaseConnection): void;
|
|
18
19
|
isClosed(): boolean;
|
|
20
|
+
getCurrentDatabasePosition(): Promise<IDatabasePosition>;
|
|
19
21
|
isWriteRequired(): boolean;
|
|
20
22
|
isManaged(): boolean;
|
|
21
23
|
hasConnection(): boolean;
|
|
@@ -60,6 +60,10 @@ class ManagedDatabaseConnection {
|
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
async getCurrentDatabasePosition() {
|
|
64
|
+
let conn = await this.$getConnection();
|
|
65
|
+
return await conn.getCurrentDatabasePosition();
|
|
66
|
+
}
|
|
63
67
|
isWriteRequired() {
|
|
64
68
|
return this.$requiresWrite;
|
|
65
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedDatabaseConnection.js","sourceRoot":"","sources":["../src/ManagedDatabaseConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAGF,yCAAuC;
|
|
1
|
+
{"version":3,"file":"ManagedDatabaseConnection.js","sourceRoot":"","sources":["../src/ManagedDatabaseConnection.ts"],"names":[],"mappings":"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"}
|
package/lib/MySQLConnection.d.ts
CHANGED
|
@@ -3,12 +3,21 @@ import { DatabaseConnection } from './DatabaseConnection';
|
|
|
3
3
|
import * as MySQL from 'mysql';
|
|
4
4
|
import { Readable } from 'stream';
|
|
5
5
|
import { IsolationLevel } from './IsolationLevel';
|
|
6
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
6
7
|
export declare class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
7
8
|
private $transaction;
|
|
8
9
|
private $opened;
|
|
10
|
+
private $isMasterConnection;
|
|
9
11
|
constructor(connection: MySQL.PoolConnection, instantiationStack: string, isReadOnly?: boolean);
|
|
12
|
+
/**
|
|
13
|
+
* @internal - Do not use in application code
|
|
14
|
+
*/
|
|
15
|
+
__internal_init(): Promise<void>;
|
|
16
|
+
isMaster(): boolean;
|
|
17
|
+
isReplication(): boolean;
|
|
10
18
|
isTransaction(): boolean;
|
|
11
19
|
isOpen(): boolean;
|
|
20
|
+
getCurrentDatabasePosition(): Promise<IDatabasePosition>;
|
|
12
21
|
protected _query(query: string, params?: any): Promise<any>;
|
|
13
22
|
protected _stream(query: string, params?: any, streamOptions?: any): Readable;
|
|
14
23
|
startTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
package/lib/MySQLConnection.js
CHANGED
|
@@ -28,6 +28,8 @@ const interfaces_1 = require("@arashi/interfaces");
|
|
|
28
28
|
const DeadLockError_1 = require("./DeadLockError");
|
|
29
29
|
const SetIsolationLevelQuery_1 = require("./private/SetIsolationLevelQuery");
|
|
30
30
|
const LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
31
|
+
const GetSlavePositionQuery_1 = require("./private/GetSlavePositionQuery");
|
|
32
|
+
const GetMasterPositionQuery_1 = require("./private/GetMasterPositionQuery");
|
|
31
33
|
const DEFAULT_HIGH_WATERMARK = 512; // in number of result objects
|
|
32
34
|
const TAG = 'MySQLConnection';
|
|
33
35
|
const SQL_FORMATTING_OPTIONS = {
|
|
@@ -52,6 +54,7 @@ class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
|
52
54
|
super(connection, isReadOnly, instantiationStack);
|
|
53
55
|
this.$opened = true;
|
|
54
56
|
this.$transaction = false;
|
|
57
|
+
this.$isMasterConnection = null;
|
|
55
58
|
connection.config.queryFormat = function (query, values) {
|
|
56
59
|
if (!values)
|
|
57
60
|
return query;
|
|
@@ -64,12 +67,29 @@ class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
|
64
67
|
}.bind(this));
|
|
65
68
|
};
|
|
66
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* @internal - Do not use in application code
|
|
72
|
+
*/
|
|
73
|
+
async __internal_init() {
|
|
74
|
+
let result = await new GetSlavePositionQuery_1.GetSlavePositionQuery().execute(this);
|
|
75
|
+
this.$isMasterConnection = result === null;
|
|
76
|
+
}
|
|
77
|
+
isMaster() {
|
|
78
|
+
return this.$isMasterConnection;
|
|
79
|
+
}
|
|
80
|
+
isReplication() {
|
|
81
|
+
return !this.isMaster();
|
|
82
|
+
}
|
|
67
83
|
isTransaction() {
|
|
68
84
|
return this.$transaction;
|
|
69
85
|
}
|
|
70
86
|
isOpen() {
|
|
71
87
|
return this.$opened;
|
|
72
88
|
}
|
|
89
|
+
async getCurrentDatabasePosition() {
|
|
90
|
+
let statusQuery = this.isReplication() ? new GetSlavePositionQuery_1.GetSlavePositionQuery() : new GetMasterPositionQuery_1.GetMasterPositionQuery();
|
|
91
|
+
return await statusQuery.execute(this);
|
|
92
|
+
}
|
|
73
93
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
74
94
|
_query(query, params) {
|
|
75
95
|
let logger = (0, instance_1.getInstance)().getLogger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;AAEF,6DAAwD;AACxD,6DAAwD;AACxD,yCAAuC;AAIvC,2EAAwE;AACxE,uDAAoD;AACpD,2DAAwD;AACxD,oEAA8C;AAE9C,mDAA4C;AAE5C,mDAAgD;AAEhD,6EAAwE;AACxE,iEAA8D;
|
|
1
|
+
{"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":"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"}
|
package/lib/MySQLDatabase.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Database } from './Database';
|
|
2
2
|
import { MySQLConnection } from './MySQLConnection';
|
|
3
3
|
import * as MySQL from 'mysql';
|
|
4
|
+
import { IDatabasePosition } from './IDatabasePosition';
|
|
4
5
|
export declare class MySQLDatabase extends Database<MySQL.PoolConfig, MySQL.PoolConnection> {
|
|
5
6
|
private $cluster;
|
|
6
7
|
constructor();
|
|
@@ -9,5 +10,6 @@ export declare class MySQLDatabase extends Database<MySQL.PoolConfig, MySQL.Pool
|
|
|
9
10
|
protected _addNode(nodeID: string, config: MySQL.PoolConfig): void;
|
|
10
11
|
protected _removeNode(nodeID: string): void;
|
|
11
12
|
protected _destroy(): Promise<void>;
|
|
12
|
-
|
|
13
|
+
private $getConnectionFromPool;
|
|
14
|
+
protected _getConnection(query: string, requireWriteAccess: boolean, position?: IDatabasePosition): Promise<MySQLConnection>;
|
|
13
15
|
}
|
package/lib/MySQLDatabase.js
CHANGED
|
@@ -21,6 +21,7 @@ const Database_1 = require("./Database");
|
|
|
21
21
|
const MySQLConnection_1 = require("./MySQLConnection");
|
|
22
22
|
const MySQL = tslib_1.__importStar(require("mysql"));
|
|
23
23
|
const instance_1 = require("./instance");
|
|
24
|
+
const ConnectionReplicationWaiter_1 = require("./private/ConnectionReplicationWaiter");
|
|
24
25
|
const TAG = 'MySQLDatabase';
|
|
25
26
|
class MySQLDatabase extends Database_1.Database {
|
|
26
27
|
constructor() {
|
|
@@ -61,10 +62,8 @@ class MySQLDatabase extends Database_1.Database {
|
|
|
61
62
|
});
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
(0, instance_1.getInstance)().getLogger().trace(TAG, `Querying connection pool for "${query}".`);
|
|
65
|
+
$getConnectionFromPool(query, requireWriteAccess, instantationStack) {
|
|
66
66
|
return new Promise((resolve, reject) => {
|
|
67
|
-
let instantationStack = new Error().stack;
|
|
68
67
|
this.$cluster.getConnection(query, (error, connection) => {
|
|
69
68
|
if (error) {
|
|
70
69
|
reject(error);
|
|
@@ -74,6 +73,30 @@ class MySQLDatabase extends Database_1.Database {
|
|
|
74
73
|
});
|
|
75
74
|
});
|
|
76
75
|
}
|
|
76
|
+
async _getConnection(query, requireWriteAccess, position) {
|
|
77
|
+
(0, instance_1.getInstance)().getLogger().trace(TAG, `Querying connection pool for "${query}".`);
|
|
78
|
+
let instantationStack = new Error().stack;
|
|
79
|
+
let conn = await this.$getConnectionFromPool(query, requireWriteAccess, instantationStack);
|
|
80
|
+
await conn.__internal_init();
|
|
81
|
+
if (conn.isReplication()) {
|
|
82
|
+
// master connections will not wait on database positions
|
|
83
|
+
// they are guarenteed to be at the tip.
|
|
84
|
+
// readonly, or otherwise known as replication connections
|
|
85
|
+
// may have replication lag. If we have a desired position target,
|
|
86
|
+
// then await for the connection to catch up to that target.
|
|
87
|
+
if (position && position.page && position.position) {
|
|
88
|
+
let waiter = new ConnectionReplicationWaiter_1.ConnectionReplicationWaiter(conn);
|
|
89
|
+
try {
|
|
90
|
+
await waiter.wait(position);
|
|
91
|
+
}
|
|
92
|
+
catch (ex) {
|
|
93
|
+
conn.close(true);
|
|
94
|
+
throw ex;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return conn;
|
|
99
|
+
}
|
|
77
100
|
}
|
|
78
101
|
exports.MySQLDatabase = MySQLDatabase;
|
|
79
102
|
//# sourceMappingURL=MySQLDatabase.js.map
|
package/lib/MySQLDatabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MySQLDatabase.js","sourceRoot":"","sources":["../src/MySQLDatabase.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;AAEF,yCAAoC;AACpC,uDAAkD;AAClD,qDAA+B;AAC/B,yCAAuC;AAEvC,MAAM,GAAG,GAAW,eAAe,CAAC;AAEpC,MAAa,aAAc,SAAQ,mBAAgD;IAG/E;QACI,KAAK,EAAE,CAAC;QACR,mEAAmE;QACnE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACpC,oBAAoB,EAAE,QAAQ;YAC9B,kBAAkB,EAAE,IAAI;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC7B,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,6EAA6E;IACtE,MAAM,CAAC,KAAU;QACpB,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,6EAA6E;IACtE,MAAM,CAAC,MAAM,CAAC,KAAU;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAES,QAAQ,CAAC,MAAc,EAAE,MAAwB;QACvD,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,oCAAoC,MAAM,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAES,WAAW,CAAC,MAAc;QAChC,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,sCAAsC,MAAM,GAAG,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAES,QAAQ;QACd,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAqB,EAAE,EAAE;gBACxC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;gBACX,CAAC;gBAED,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;
|
|
1
|
+
{"version":3,"file":"MySQLDatabase.js","sourceRoot":"","sources":["../src/MySQLDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StormError } from './StormError';
|
|
2
|
+
import { ErrorCode } from './ErrorCode';
|
|
3
|
+
import { StatusCode } from './StatusCode';
|
|
4
|
+
/**
|
|
5
|
+
* @since 8.1.0
|
|
6
|
+
*/
|
|
7
|
+
export declare class TimeoutError extends StormError {
|
|
8
|
+
constructor();
|
|
9
|
+
getMessage(): string;
|
|
10
|
+
getCode(): ErrorCode;
|
|
11
|
+
getHTTPCode(): StatusCode;
|
|
12
|
+
getLocaleCode(): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2024 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TimeoutError = void 0;
|
|
19
|
+
const StormError_1 = require("./StormError");
|
|
20
|
+
const ErrorCode_1 = require("./ErrorCode");
|
|
21
|
+
const StatusCode_1 = require("./StatusCode");
|
|
22
|
+
/**
|
|
23
|
+
* @since 8.1.0
|
|
24
|
+
*/
|
|
25
|
+
class TimeoutError extends StormError_1.StormError {
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
}
|
|
29
|
+
getMessage() {
|
|
30
|
+
return `The requested resource could not be reached in time.`;
|
|
31
|
+
}
|
|
32
|
+
getCode() {
|
|
33
|
+
return ErrorCode_1.ErrorCode.INTERNAL;
|
|
34
|
+
}
|
|
35
|
+
getHTTPCode() {
|
|
36
|
+
return StatusCode_1.StatusCode.ERR_REQUEST_TIMEOUT;
|
|
37
|
+
}
|
|
38
|
+
getLocaleCode() {
|
|
39
|
+
return '@breautek/storm/TimeoutError/message';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.TimeoutError = TimeoutError;
|
|
43
|
+
//# sourceMappingURL=TimeoutError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeoutError.js","sourceRoot":"","sources":["../src/TimeoutError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,6CAAwC;AACxC,2CAAsC;AACtC,6CAAwC;AAExC;;GAEG;AACH,MAAa,YAAa,SAAQ,uBAAU;IACxC;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,UAAU;QACb,OAAO,sDAAsD,CAAC;IAClE,CAAC;IAEM,OAAO;QACV,OAAO,qBAAS,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAEM,WAAW;QACd,OAAO,uBAAU,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAEe,aAAa;QACzB,OAAO,sCAAsC,CAAC;IAClD,CAAC;CACJ;AApBD,oCAoBC"}
|
package/lib/api.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export { IStoredProcedureResult } from './IStoredProcedureResult';
|
|
|
21
21
|
export { ErrorCode } from './ErrorCode';
|
|
22
22
|
export { RawError } from './RawError';
|
|
23
23
|
export { StormError, IErrorResponse, IAdditionalErrorDetails } from './StormError';
|
|
24
|
+
export { TimeoutError } from './TimeoutError';
|
|
24
25
|
export { JWTError } from './JWTError';
|
|
25
26
|
export { MissingParameterError } from './MissingParameterError';
|
|
26
27
|
export { InvalidCredentialsError } from './InvalidCredentialsError';
|
|
@@ -57,6 +58,7 @@ export { IDatabaseConnection } from './IDatabaseConnection';
|
|
|
57
58
|
export { IServiceHeaders } from './IServiceHeaders';
|
|
58
59
|
export { IAuthTokenData } from './IAuthTokenData';
|
|
59
60
|
export { IQueryable } from './IQueryable';
|
|
61
|
+
export { IDatabasePosition } from './IDatabasePosition';
|
|
60
62
|
export { Token } from './Token';
|
|
61
63
|
export { TokenManager } from './TokenManager';
|
|
62
64
|
export { ExitCode } from './ExitCode';
|
package/lib/api.js
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
19
|
-
exports.formidable = exports.Polygon = void 0;
|
|
18
|
+
exports.Point = exports.DatabaseCastObject = exports.ExitCode = exports.TokenManager = exports.Token = exports.BackendAuthenticationMiddleware = exports.ServiceResponse = exports.HTTPMethod = exports.ServiceProvider = exports.CORSMiddleware = exports.Handler = exports.ResponseData = exports.Response = exports.Request = exports.Middleware = exports.StatusCode = exports.LockWaitTimeoutError = exports.DeadLockError = exports.NotImplementedError = exports.DatabaseQueryError = exports.MissingConfigError = exports.DuplicateEntryError = exports.DiskSpaceError = exports.EntityNotFoundError = exports.UnauthorizedAccessError = exports.InvalidValueError = exports.ExpiredTokenError = exports.InternalError = exports.InvalidCredentialsError = exports.MissingParameterError = exports.JWTError = exports.TimeoutError = exports.StormError = exports.RawError = exports.ErrorCode = exports.Transaction = exports.IsolationLevel = exports.SetSessionVariableQuery = exports.RawQuery = exports.DropTemporaryTableQuery = exports.TemporaryTableQuery = exports.Query = exports.ManagedDatabaseConnection = exports.MySQLConnection = exports.MySQLDatabase = exports.DatabaseConnection = exports.Database = exports.ConfigLoader = exports.Application = exports.getInstance = void 0;
|
|
19
|
+
exports.formidable = exports.Polygon = exports.LineString = void 0;
|
|
20
20
|
const tslib_1 = require("tslib");
|
|
21
21
|
// Application
|
|
22
22
|
var instance_1 = require("./instance");
|
|
@@ -58,6 +58,8 @@ var RawError_1 = require("./RawError");
|
|
|
58
58
|
Object.defineProperty(exports, "RawError", { enumerable: true, get: function () { return RawError_1.RawError; } });
|
|
59
59
|
var StormError_1 = require("./StormError");
|
|
60
60
|
Object.defineProperty(exports, "StormError", { enumerable: true, get: function () { return StormError_1.StormError; } });
|
|
61
|
+
var TimeoutError_1 = require("./TimeoutError");
|
|
62
|
+
Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return TimeoutError_1.TimeoutError; } });
|
|
61
63
|
var JWTError_1 = require("./JWTError");
|
|
62
64
|
Object.defineProperty(exports, "JWTError", { enumerable: true, get: function () { return JWTError_1.JWTError; } });
|
|
63
65
|
var MissingParameterError_1 = require("./MissingParameterError");
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAInB,SAAS;AACT,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AAId,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,iEAA8D;AAAtD,8HAAA,qBAAqB,OAAA;AAC7B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,OAAO;AACP,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAiD;AAAzC,kGAAA,OAAO,OAAA;AACf,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qCAAmE;AAA3D,kGAAA,OAAO,OAAA;AACf,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qFAAkF;AAA1E,kJAAA,+BAA+B,OAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAInB,SAAS;AACT,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AAId,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,iEAA8D;AAAtD,8HAAA,qBAAqB,OAAA;AAC7B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,OAAO;AACP,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAiD;AAAzC,kGAAA,OAAO,OAAA;AACf,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qCAAmE;AAA3D,kGAAA,OAAO,OAAA;AACf,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qFAAkF;AAA1E,kJAAA,+BAA+B,OAAA;AAoBvC,QAAQ;AACR,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,QAAQ;AACR,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AAEf,cAAc;AACd,+DAAyC;AACjC,gCAAU"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IDatabaseConnection } from '../IDatabaseConnection';
|
|
2
|
+
import { IDatabasePosition } from '../IDatabasePosition';
|
|
3
|
+
export declare class ConnectionReplicationWaiter {
|
|
4
|
+
/**
|
|
5
|
+
* The default retry delay in milliseconds.
|
|
6
|
+
* Defaults to 1 second.
|
|
7
|
+
*
|
|
8
|
+
* This is the value used in between status query iterations.
|
|
9
|
+
*/
|
|
10
|
+
static readonly DEFAULT_RETRY_DELAY: number;
|
|
11
|
+
/**
|
|
12
|
+
* The default timeout delay. Defaults to 120 seconds.
|
|
13
|
+
* If the connection could not reach the target position in time,
|
|
14
|
+
* then the wait will timeout
|
|
15
|
+
*
|
|
16
|
+
* Using `Infinity` will disable the timeout
|
|
17
|
+
*/
|
|
18
|
+
static readonly DEFAULT_TIMEOUT: number;
|
|
19
|
+
private $conn;
|
|
20
|
+
private $retryDelay;
|
|
21
|
+
constructor(conn: IDatabaseConnection, retryDelay?: number);
|
|
22
|
+
private $sleep;
|
|
23
|
+
wait(target: IDatabasePosition, timeout?: number): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2024 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ConnectionReplicationWaiter = void 0;
|
|
19
|
+
const InternalError_1 = require("../InternalError");
|
|
20
|
+
const TimeoutError_1 = require("../TimeoutError");
|
|
21
|
+
class ConnectionReplicationWaiter {
|
|
22
|
+
constructor(conn, retryDelay = ConnectionReplicationWaiter.DEFAULT_RETRY_DELAY) {
|
|
23
|
+
this.$conn = conn;
|
|
24
|
+
this.$retryDelay = retryDelay;
|
|
25
|
+
}
|
|
26
|
+
$sleep(timeout) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
resolve();
|
|
30
|
+
}, timeout);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async wait(target, timeout = ConnectionReplicationWaiter.DEFAULT_TIMEOUT) {
|
|
34
|
+
if (!this.$conn.isReadOnly()) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let shouldTimeout = false;
|
|
38
|
+
let didTimeout = false;
|
|
39
|
+
let timeoutTimer = setTimeout(() => {
|
|
40
|
+
shouldTimeout = true;
|
|
41
|
+
}, timeout);
|
|
42
|
+
// eslint-disable-next-line no-constant-condition
|
|
43
|
+
while (true) {
|
|
44
|
+
if (shouldTimeout) {
|
|
45
|
+
didTimeout = true;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
let currentPos = await this.$conn.getCurrentDatabasePosition();
|
|
49
|
+
if (currentPos === null || (currentPos && !currentPos.page === null) || (currentPos && !currentPos.position === null)) {
|
|
50
|
+
throw new InternalError_1.InternalError('Database Position not supported');
|
|
51
|
+
}
|
|
52
|
+
// If the current page is greater than the target page,
|
|
53
|
+
// then the position doesn't matter, we are ahead of the
|
|
54
|
+
// desired target position.
|
|
55
|
+
if (currentPos.page > target.page) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
// If the pages are equal, we need to check the position
|
|
59
|
+
// and ensure we are at or greater than the target.
|
|
60
|
+
if (currentPos.page === target.page && currentPos.position >= target.position) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
// If we made it here, it means the position state checks failed
|
|
64
|
+
// so wait a short while and then re-iterate
|
|
65
|
+
await this.$sleep(this.$retryDelay);
|
|
66
|
+
}
|
|
67
|
+
if (didTimeout) {
|
|
68
|
+
// If the while loop exited due to the timeout,
|
|
69
|
+
// then throw a timeout error
|
|
70
|
+
throw new TimeoutError_1.TimeoutError();
|
|
71
|
+
}
|
|
72
|
+
// Otherwise we are good to go!
|
|
73
|
+
clearTimeout(timeoutTimer);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.ConnectionReplicationWaiter = ConnectionReplicationWaiter;
|
|
77
|
+
/**
|
|
78
|
+
* The default retry delay in milliseconds.
|
|
79
|
+
* Defaults to 1 second.
|
|
80
|
+
*
|
|
81
|
+
* This is the value used in between status query iterations.
|
|
82
|
+
*/
|
|
83
|
+
ConnectionReplicationWaiter.DEFAULT_RETRY_DELAY = 1000;
|
|
84
|
+
/**
|
|
85
|
+
* The default timeout delay. Defaults to 120 seconds.
|
|
86
|
+
* If the connection could not reach the target position in time,
|
|
87
|
+
* then the wait will timeout
|
|
88
|
+
*
|
|
89
|
+
* Using `Infinity` will disable the timeout
|
|
90
|
+
*/
|
|
91
|
+
ConnectionReplicationWaiter.DEFAULT_TIMEOUT = 120 * 1000; // 120 seconds in ms
|
|
92
|
+
//# sourceMappingURL=ConnectionReplicationWaiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionReplicationWaiter.js","sourceRoot":"","sources":["../../src/private/ConnectionReplicationWaiter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;EAcE;;;AAIF,oDAAiD;AACjD,kDAA+C;AAE/C,MAAa,2BAA2B;IAqBpC,YAAmB,IAAyB,EAAE,aAAqB,2BAA2B,CAAC,mBAAmB;QAC9G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAyB,EAAE,UAAkB,2BAA2B,CAAC,eAAe;QACtG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,IAAI,aAAa,GAAY,KAAK,CAAC;QACnC,IAAI,UAAU,GAAY,KAAK,CAAC;QAEhC,IAAI,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,aAAa,GAAG,IAAI,CAAC;QACzB,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,aAAa,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACV,CAAC;YAED,IAAI,UAAU,GAAsB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;YAElF,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpH,MAAM,IAAI,6BAAa,CAAC,iCAAiC,CAAC,CAAC;YAC/D,CAAC;YAED,uDAAuD;YACvD,wDAAwD;YACxD,2BAA2B;YAC3B,IAAI,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM;YACV,CAAC;YAED,wDAAwD;YACxD,mDAAmD;YACnD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC5E,MAAM;YACV,CAAC;YAED,gEAAgE;YAChE,4CAA4C;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACb,+CAA+C;YAC/C,6BAA6B;YAC7B,MAAM,IAAI,2BAAY,EAAE,CAAC;QAC7B,CAAC;QAED,+BAA+B;QAC/B,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;;AArFL,kEAsFC;AArFG;;;;;GAKG;AACoB,+CAAmB,GAAW,IAAI,CAAC;AAE1D;;;;;;GAMG;AACoB,2CAAe,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,oBAAoB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Query } from '../Query';
|
|
2
|
+
import { IDatabasePosition } from '../IDatabasePosition';
|
|
3
|
+
import { IDatabaseConnection } from '../IDatabaseConnection';
|
|
4
|
+
/**
|
|
5
|
+
* @since 8.1.0
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class GetBinLogPositionQuery<TStatusRow = unknown> extends Query<void, TStatusRow[], IDatabasePosition> {
|
|
8
|
+
protected abstract _getQuery(): string;
|
|
9
|
+
protected abstract _getFile(row: TStatusRow): string;
|
|
10
|
+
protected abstract _getPosition(row: TStatusRow): string;
|
|
11
|
+
onPostProcess(connection: IDatabaseConnection, resultSet: TStatusRow[]): Promise<IDatabasePosition>;
|
|
12
|
+
}
|