@breautek/storm 5.0.0 → 5.0.1-beta.3
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/CHANGELOG.md +20 -23
- package/docs/README.md +6 -5
- package/docs/classes/Application.md +26 -26
- package/docs/classes/BackendAuthenticationMiddleware.md +2 -2
- package/docs/classes/CORSMiddleware.md +6 -6
- package/docs/classes/ConfigLoader.md +1 -1
- package/docs/classes/Database.md +12 -12
- package/docs/classes/DatabaseCastObject.md +3 -3
- package/docs/classes/DatabaseConnection.md +19 -19
- package/docs/classes/DatabaseQueryError.md +12 -10
- package/docs/classes/DeadLockError.md +10 -10
- package/docs/classes/DiskSpaceError.md +10 -10
- package/docs/classes/DropTemporaryTableQuery.md +8 -8
- package/docs/classes/DumpStream.md +1 -1
- package/docs/classes/DuplicateEntryError.md +10 -10
- package/docs/classes/EntityNotFoundError.md +10 -10
- package/docs/classes/ExpiredTokenError.md +10 -10
- package/docs/classes/Handler.md +13 -13
- package/docs/classes/InternalError.md +10 -10
- package/docs/classes/InvalidCredentialsError.md +10 -10
- package/docs/classes/InvalidValueError.md +10 -10
- package/docs/classes/LineString.md +4 -4
- package/docs/classes/LockWaitTimeoutError.md +349 -0
- package/docs/classes/ManagedDatabaseConnection.md +19 -19
- package/docs/classes/Middleware.md +3 -3
- package/docs/classes/MissingConfigError.md +10 -10
- package/docs/classes/MissingParameterError.md +10 -10
- package/docs/classes/MySQLConnection.md +20 -20
- package/docs/classes/MySQLDatabase.md +13 -13
- package/docs/classes/NotImplementedError.md +10 -10
- package/docs/classes/Point.md +4 -4
- package/docs/classes/Polygon.md +4 -4
- package/docs/classes/Query.md +8 -8
- package/docs/classes/RawError.md +10 -10
- package/docs/classes/RawQuery.md +8 -8
- package/docs/classes/Request.md +18 -18
- package/docs/classes/Response.md +11 -11
- package/docs/classes/ResponseData.md +7 -7
- package/docs/classes/ServiceProvider.md +15 -15
- package/docs/classes/ServiceResponse.md +5 -5
- package/docs/classes/SetSessionVariableQuery.md +8 -8
- package/docs/classes/StormError.md +10 -10
- package/docs/classes/TemporaryTableQuery.md +8 -8
- package/docs/classes/Token.md +2 -2
- package/docs/classes/TokenManager.md +4 -4
- package/docs/classes/Transaction.md +6 -6
- package/docs/classes/UnauthorizedAccessError.md +10 -10
- package/docs/enums/ErrorCode.md +9 -9
- package/docs/enums/ExitCode.md +2 -2
- package/docs/enums/HTTPMethod.md +4 -4
- package/docs/enums/IsolationLevel.md +4 -4
- package/docs/enums/JWTError.md +2 -2
- package/docs/enums/StatusCode.md +48 -48
- package/docs/interfaces/IConfig.md +8 -8
- package/docs/interfaces/IDatabaseConfig.md +6 -6
- package/docs/interfaces/IDatabaseConnection.md +14 -14
- package/docs/interfaces/IErrorResponse.md +5 -5
- package/docs/interfaces/IFormData.md +2 -2
- package/docs/interfaces/IHandler.md +1 -1
- package/docs/interfaces/IInsertQueryResult.md +3 -3
- package/docs/interfaces/IJWTVerifyOptions.md +1 -1
- package/docs/interfaces/IQueryable.md +5 -5
- package/docs/interfaces/IRequestResponse.md +2 -2
- package/docs/interfaces/ISetSessionVariableQueryInput.md +2 -2
- package/docs/interfaces/ITemporaryTableQueryInput.md +2 -2
- package/docs/interfaces/IUpdateQueryResult.md +2 -2
- package/lib/LockWaitTimeoutError.d.ts +6 -0
- package/lib/LockWaitTimeoutError.js +26 -0
- package/lib/LockWaitTimeoutError.js.map +1 -0
- package/lib/MySQLConnection.js +7 -0
- package/lib/MySQLConnection.js.map +1 -1
- package/lib/Transaction.js +6 -0
- package/lib/Transaction.js.map +1 -1
- package/lib/api.d.ts +1 -0
- package/lib/api.js +4 -2
- package/lib/api.js.map +1 -1
- package/package.json +16 -16
- package/src/LockWaitTimeoutError.ts +22 -0
- package/src/MySQLConnection.ts +7 -0
- package/src/Transaction.ts +6 -0
- package/src/api.ts +1 -0
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/IFormData.ts:20](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/IFormData.ts:20](https://github.com/breautek/storm/blob/d45307d/src/IFormData.ts#L20)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/IFormData.ts:21](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/IFormData.ts:21](https://github.com/breautek/storm/blob/d45307d/src/IFormData.ts#L21)
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
#### Defined in
|
|
20
20
|
|
|
21
|
-
[src/IInsertQueryResult.ts:19](https://github.com/breautek/storm/blob/
|
|
21
|
+
[src/IInsertQueryResult.ts:19](https://github.com/breautek/storm/blob/d45307d/src/IInsertQueryResult.ts#L19)
|
|
22
22
|
|
|
23
23
|
___
|
|
24
24
|
|
|
@@ -28,7 +28,7 @@ ___
|
|
|
28
28
|
|
|
29
29
|
#### Defined in
|
|
30
30
|
|
|
31
|
-
[src/IInsertQueryResult.ts:20](https://github.com/breautek/storm/blob/
|
|
31
|
+
[src/IInsertQueryResult.ts:20](https://github.com/breautek/storm/blob/d45307d/src/IInsertQueryResult.ts#L20)
|
|
32
32
|
|
|
33
33
|
___
|
|
34
34
|
|
|
@@ -38,4 +38,4 @@ ___
|
|
|
38
38
|
|
|
39
39
|
#### Defined in
|
|
40
40
|
|
|
41
|
-
[src/IInsertQueryResult.ts:18](https://github.com/breautek/storm/blob/
|
|
41
|
+
[src/IInsertQueryResult.ts:18](https://github.com/breautek/storm/blob/d45307d/src/IInsertQueryResult.ts#L18)
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
#### Defined in
|
|
43
43
|
|
|
44
|
-
[src/IQueryable.ts:22](https://github.com/breautek/storm/blob/
|
|
44
|
+
[src/IQueryable.ts:22](https://github.com/breautek/storm/blob/d45307d/src/IQueryable.ts#L22)
|
|
45
45
|
|
|
46
46
|
___
|
|
47
47
|
|
|
@@ -55,7 +55,7 @@ ___
|
|
|
55
55
|
|
|
56
56
|
#### Defined in
|
|
57
57
|
|
|
58
|
-
[src/IQueryable.ts:23](https://github.com/breautek/storm/blob/
|
|
58
|
+
[src/IQueryable.ts:23](https://github.com/breautek/storm/blob/d45307d/src/IQueryable.ts#L23)
|
|
59
59
|
|
|
60
60
|
___
|
|
61
61
|
|
|
@@ -75,7 +75,7 @@ ___
|
|
|
75
75
|
|
|
76
76
|
#### Defined in
|
|
77
77
|
|
|
78
|
-
[src/IQueryable.ts:21](https://github.com/breautek/storm/blob/
|
|
78
|
+
[src/IQueryable.ts:21](https://github.com/breautek/storm/blob/d45307d/src/IQueryable.ts#L21)
|
|
79
79
|
|
|
80
80
|
___
|
|
81
81
|
|
|
@@ -96,7 +96,7 @@ ___
|
|
|
96
96
|
|
|
97
97
|
#### Defined in
|
|
98
98
|
|
|
99
|
-
[src/IQueryable.ts:24](https://github.com/breautek/storm/blob/
|
|
99
|
+
[src/IQueryable.ts:24](https://github.com/breautek/storm/blob/d45307d/src/IQueryable.ts#L24)
|
|
100
100
|
|
|
101
101
|
___
|
|
102
102
|
|
|
@@ -116,4 +116,4 @@ ___
|
|
|
116
116
|
|
|
117
117
|
#### Defined in
|
|
118
118
|
|
|
119
|
-
[src/IQueryable.ts:20](https://github.com/breautek/storm/blob/
|
|
119
|
+
[src/IQueryable.ts:20](https://github.com/breautek/storm/blob/d45307d/src/IQueryable.ts#L20)
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
#### Defined in
|
|
26
26
|
|
|
27
|
-
[src/IRequestResponse.ts:21](https://github.com/breautek/storm/blob/
|
|
27
|
+
[src/IRequestResponse.ts:21](https://github.com/breautek/storm/blob/d45307d/src/IRequestResponse.ts#L21)
|
|
28
28
|
|
|
29
29
|
___
|
|
30
30
|
|
|
@@ -34,4 +34,4 @@ ___
|
|
|
34
34
|
|
|
35
35
|
#### Defined in
|
|
36
36
|
|
|
37
|
-
[src/IRequestResponse.ts:22](https://github.com/breautek/storm/blob/
|
|
37
|
+
[src/IRequestResponse.ts:22](https://github.com/breautek/storm/blob/d45307d/src/IRequestResponse.ts#L22)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/SetSessionVariableQuery.ts:7](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/SetSessionVariableQuery.ts:7](https://github.com/breautek/storm/blob/d45307d/src/SetSessionVariableQuery.ts#L7)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/SetSessionVariableQuery.ts:8](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/SetSessionVariableQuery.ts:8](https://github.com/breautek/storm/blob/d45307d/src/SetSessionVariableQuery.ts#L8)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/TemporaryTableQuery.ts:22](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/TemporaryTableQuery.ts:22](https://github.com/breautek/storm/blob/d45307d/src/TemporaryTableQuery.ts#L22)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/TemporaryTableQuery.ts:21](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/TemporaryTableQuery.ts:21](https://github.com/breautek/storm/blob/d45307d/src/TemporaryTableQuery.ts#L21)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/IUpdateQueryResult.ts:18](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/IUpdateQueryResult.ts:18](https://github.com/breautek/storm/blob/d45307d/src/IUpdateQueryResult.ts#L18)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/IUpdateQueryResult.ts:19](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/IUpdateQueryResult.ts:19](https://github.com/breautek/storm/blob/d45307d/src/IUpdateQueryResult.ts#L19)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2021 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.LockWaitTimeoutError = void 0;
|
|
19
|
+
const DatabaseQueryError_1 = require("./DatabaseQueryError");
|
|
20
|
+
/**
|
|
21
|
+
* DeadLockError is a DatabaseQueryError but is subclasses for typing purposes.
|
|
22
|
+
*/
|
|
23
|
+
class LockWaitTimeoutError extends DatabaseQueryError_1.DatabaseQueryError {
|
|
24
|
+
}
|
|
25
|
+
exports.LockWaitTimeoutError = LockWaitTimeoutError;
|
|
26
|
+
//# sourceMappingURL=LockWaitTimeoutError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockWaitTimeoutError.js","sourceRoot":"","sources":["../src/LockWaitTimeoutError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,6DAAwD;AAExD;;GAEG;AACH,MAAa,oBAAqB,SAAQ,uCAAkB;CAAG;AAA/D,oDAA+D"}
|
package/lib/MySQLConnection.js
CHANGED
|
@@ -26,6 +26,7 @@ const SQLFormatter = require("sql-formatter");
|
|
|
26
26
|
const logger_1 = require("@arashi/logger");
|
|
27
27
|
const DeadLockError_1 = require("./DeadLockError");
|
|
28
28
|
const SetIsolationLevelQuery_1 = require("./private/SetIsolationLevelQuery");
|
|
29
|
+
const LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
29
30
|
const DEFAULT_HIGH_WATERMARK = 512; // in number of result objects
|
|
30
31
|
const TAG = 'MySQLConnection';
|
|
31
32
|
const SQL_FORMATTING_OPTIONS = {
|
|
@@ -99,6 +100,12 @@ class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
|
99
100
|
// When deadlocks occur, the transaction is automatically rollback, so we can clear transanction status.
|
|
100
101
|
this.$transaction = false;
|
|
101
102
|
}
|
|
103
|
+
else if (error.code === 'ER_LOCK_WAIT_TIMEOUT') {
|
|
104
|
+
// lock wait may not rollback the transaction (depends on how the server is configured)
|
|
105
|
+
// however the transaction is retryable. The user shall configure
|
|
106
|
+
// if they want to retry on timeouts.
|
|
107
|
+
e = new LockWaitTimeoutError_1.LockWaitTimeoutError(sql, error);
|
|
108
|
+
}
|
|
102
109
|
else {
|
|
103
110
|
e = new DatabaseQueryError_1.DatabaseQueryError(sql, error);
|
|
104
111
|
}
|
|
@@ -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,8CAA8C;AAC9C,2CAAkD;AAElD,mDAAgD;AAEhD,6EAAwE;
|
|
1
|
+
{"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":"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"}
|
package/lib/Transaction.js
CHANGED
|
@@ -20,6 +20,7 @@ const IsolationLevel_1 = require("./IsolationLevel");
|
|
|
20
20
|
const InternalError_1 = require("./InternalError");
|
|
21
21
|
const DeadLockError_1 = require("./DeadLockError");
|
|
22
22
|
const InvalidValueError_1 = require("./InvalidValueError");
|
|
23
|
+
const LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
23
24
|
const TAG = 'Transaction';
|
|
24
25
|
/**
|
|
25
26
|
* A class encapsulating an entire transaction from beginning to commitment.
|
|
@@ -70,6 +71,11 @@ class Transaction {
|
|
|
70
71
|
if (attemptCount < this.$retryLimit && ex instanceof DeadLockError_1.DeadLockError) {
|
|
71
72
|
this.$application.getLogger().warn(TAG, `Deadlock received... retrying transaction`);
|
|
72
73
|
}
|
|
74
|
+
else if (attemptCount < this.$retryLimit && ex instanceof LockWaitTimeoutError_1.LockWaitTimeoutError) {
|
|
75
|
+
this.$application.getLogger().warn(TAG, `Lock timeout... retrying transaction`);
|
|
76
|
+
// The server does not auto rollback a timeout (it may be configured to do so, but we will assume that it's not)
|
|
77
|
+
await connection.rollback();
|
|
78
|
+
}
|
|
73
79
|
else {
|
|
74
80
|
await connection.rollback();
|
|
75
81
|
throw ex;
|
package/lib/Transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAKF,qDAAkD;AAClD,mDAAgD;AAChD,mDAAgD;AAChD,2DAAwD;
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAKF,qDAAkD;AAClD,mDAAgD;AAChD,mDAAgD;AAChD,2DAAwD;AACxD,iEAA8D;AAE9D,MAAM,GAAG,GAAW,aAAa,CAAC;AAIlC;;;;;;GAMG;AACH,MAAa,WAAW;IAMpB,YAAmB,GAAgB,EAAE,QAA8B,EAAE,aAAqB,QAAQ,EAAE,iBAAiC,+BAAc,CAAC,eAAe;QAC/J,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;YACjD,UAAU,GAAG,QAAQ,CAAC;SACzB;aACI,IAAI,UAAU,IAAI,CAAC,EAAE;YACtB,MAAM,IAAI,qCAAiB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,UAA+B,IAAkB,CAAC;IAEnE,QAAQ,CAAC,UAA+B;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,qBAAqB;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,KAAK,CAAC,aAAa,CAAC,UAA+B,EAAE,OAAY;QACpE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAA+B;QAChD,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE;YAC5B,MAAM,IAAI,6BAAa,CAAC,yFAAyF,CAAC,CAAC;SACtH;QAED,IAAI,YAAY,GAAW,CAAC,CAAC;QAC7B,GAAG;YACC,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,gCAAgC,YAAY,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvK,MAAM,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;gBAE1B,yDAAyD;gBACzD,MAAM;aACT;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,YAAY,6BAAa,EAAE;oBAChE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC;iBACxF;qBACI,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,YAAY,2CAAoB,EAAE;oBAC5E,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;oBAChF,gHAAgH;oBAChH,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;iBAC/B;qBACI;oBACD,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC5B,MAAM,EAAE,CAAC;iBACZ;aACJ;SACJ,QAAQ,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;IAC9C,CAAC;CACJ;AAlED,kCAkEC"}
|
package/lib/api.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export { MissingConfigError } from './MissingConfigError';
|
|
|
33
33
|
export { DatabaseQueryError } from './DatabaseQueryError';
|
|
34
34
|
export { NotImplementedError } from './NotImplementedError';
|
|
35
35
|
export { DeadLockError } from './DeadLockError';
|
|
36
|
+
export { LockWaitTimeoutError } from './LockWaitTimeoutError';
|
|
36
37
|
export { StatusCode } from './StatusCode';
|
|
37
38
|
export { Middleware } from './Middleware';
|
|
38
39
|
export { Request, IParameterMap } from './Request';
|
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.DumpStream = 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.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
|
// Application
|
|
21
21
|
var instance_1 = require("./instance");
|
|
22
22
|
Object.defineProperty(exports, "getInstance", { enumerable: true, get: function () { return instance_1.getInstance; } });
|
|
@@ -85,6 +85,8 @@ var NotImplementedError_1 = require("./NotImplementedError");
|
|
|
85
85
|
Object.defineProperty(exports, "NotImplementedError", { enumerable: true, get: function () { return NotImplementedError_1.NotImplementedError; } });
|
|
86
86
|
var DeadLockError_1 = require("./DeadLockError");
|
|
87
87
|
Object.defineProperty(exports, "DeadLockError", { enumerable: true, get: function () { return DeadLockError_1.DeadLockError; } });
|
|
88
|
+
var LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
89
|
+
Object.defineProperty(exports, "LockWaitTimeoutError", { enumerable: true, get: function () { return LockWaitTimeoutError_1.LockWaitTimeoutError; } });
|
|
88
90
|
// HTTP
|
|
89
91
|
var StatusCode_1 = require("./StatusCode");
|
|
90
92
|
Object.defineProperty(exports, "StatusCode", { enumerable: true, get: function () { return StatusCode_1.StatusCode; } });
|
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,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAEnB,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;AAEnB,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;
|
|
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,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAEnB,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;AAEnB,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;AAcvC,QAAQ;AACR,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,QAAQ;AACR,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAIlB,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,yCAAyC;AACjC,gCAAU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breautek/storm",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1-beta.3",
|
|
4
4
|
"description": "Object-Oriented REST API framework",
|
|
5
5
|
"main": "lib/api.js",
|
|
6
6
|
"types": "lib/api.d.ts",
|
|
@@ -46,22 +46,22 @@
|
|
|
46
46
|
"@arashi/token": "1.0.1",
|
|
47
47
|
"@breautek/merge-change": "1.0.0",
|
|
48
48
|
"@types/body-parser": "1.19.2",
|
|
49
|
-
"@types/express": "4.17.
|
|
49
|
+
"@types/express": "4.17.17",
|
|
50
50
|
"@types/formidable": "1.2.3",
|
|
51
51
|
"@types/jsonwebtoken": "9.0.1",
|
|
52
52
|
"@types/mysql": "2.15.21",
|
|
53
|
-
"@types/node": "18.
|
|
54
|
-
"@types/uuid": "9.0.
|
|
53
|
+
"@types/node": "18.15.0",
|
|
54
|
+
"@types/uuid": "9.0.1",
|
|
55
55
|
"ajv": "8.12.0",
|
|
56
|
-
"body-parser": "1.20.
|
|
56
|
+
"body-parser": "1.20.2",
|
|
57
57
|
"commander": "10.0.0",
|
|
58
58
|
"express": "4.18.2",
|
|
59
59
|
"form-data": "4.0.0",
|
|
60
60
|
"formidable": "1.2.2",
|
|
61
61
|
"jsonwebtoken": "9.0.0",
|
|
62
62
|
"mysql": "2.18.1",
|
|
63
|
-
"sql-formatter": "12.
|
|
64
|
-
"tslib": "2.
|
|
63
|
+
"sql-formatter": "12.1.3",
|
|
64
|
+
"tslib": "2.5.0",
|
|
65
65
|
"uuid": "9.0.0"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
@@ -69,18 +69,18 @@
|
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@arashi/logger": "2.1.0",
|
|
72
|
-
"@totalpave/eslint-plugin": "6.0.
|
|
73
|
-
"@types/jest": "29.
|
|
74
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
75
|
-
"@typescript-eslint/parser": "5.
|
|
72
|
+
"@totalpave/eslint-plugin": "6.0.9",
|
|
73
|
+
"@types/jest": "29.4.0",
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "5.54.1",
|
|
75
|
+
"@typescript-eslint/parser": "5.54.1",
|
|
76
76
|
"auto-changelog": "2.4.0",
|
|
77
|
-
"eslint": "8.
|
|
78
|
-
"jest": "29.
|
|
79
|
-
"jest-jasmine2": "29.
|
|
77
|
+
"eslint": "8.36.0",
|
|
78
|
+
"jest": "29.5.0",
|
|
79
|
+
"jest-jasmine2": "29.5.0",
|
|
80
80
|
"ts-jest": "29.0.5",
|
|
81
81
|
"ts-node": "10.9.1",
|
|
82
|
-
"typedoc": "0.23.
|
|
82
|
+
"typedoc": "0.23.26",
|
|
83
83
|
"typedoc-plugin-markdown": "3.14.0",
|
|
84
|
-
"typescript": "4.9.
|
|
84
|
+
"typescript": "4.9.5"
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2017-2021 Norman Breau
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {DatabaseQueryError} from './DatabaseQueryError';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* DeadLockError is a DatabaseQueryError but is subclasses for typing purposes.
|
|
21
|
+
*/
|
|
22
|
+
export class LockWaitTimeoutError extends DatabaseQueryError {}
|
package/src/MySQLConnection.ts
CHANGED
|
@@ -29,6 +29,7 @@ import { StormError } from './StormError';
|
|
|
29
29
|
import { DeadLockError } from './DeadLockError';
|
|
30
30
|
import { IsolationLevel } from './IsolationLevel';
|
|
31
31
|
import {SetIsolationLevelQuery} from './private/SetIsolationLevelQuery';
|
|
32
|
+
import { LockWaitTimeoutError } from './LockWaitTimeoutError';
|
|
32
33
|
|
|
33
34
|
const DEFAULT_HIGH_WATERMARK: number = 512; // in number of result objects
|
|
34
35
|
const TAG: string = 'MySQLConnection';
|
|
@@ -115,6 +116,12 @@ export class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
|
115
116
|
// When deadlocks occur, the transaction is automatically rollback, so we can clear transanction status.
|
|
116
117
|
this.$transaction = false;
|
|
117
118
|
}
|
|
119
|
+
else if (error.code === 'ER_LOCK_WAIT_TIMEOUT') {
|
|
120
|
+
// lock wait may not rollback the transaction (depends on how the server is configured)
|
|
121
|
+
// however the transaction is retryable. The user shall configure
|
|
122
|
+
// if they want to retry on timeouts.
|
|
123
|
+
e = new LockWaitTimeoutError(sql, error);
|
|
124
|
+
}
|
|
118
125
|
else {
|
|
119
126
|
e = new DatabaseQueryError(sql, error);
|
|
120
127
|
}
|
package/src/Transaction.ts
CHANGED
|
@@ -21,6 +21,7 @@ import { IsolationLevel } from './IsolationLevel';
|
|
|
21
21
|
import { InternalError } from './InternalError';
|
|
22
22
|
import { DeadLockError } from './DeadLockError';
|
|
23
23
|
import { InvalidValueError } from './InvalidValueError';
|
|
24
|
+
import { LockWaitTimeoutError } from './LockWaitTimeoutError';
|
|
24
25
|
|
|
25
26
|
const TAG: string = 'Transaction';
|
|
26
27
|
|
|
@@ -87,6 +88,11 @@ export class Transaction implements IQueryable<void> {
|
|
|
87
88
|
if (attemptCount < this.$retryLimit && ex instanceof DeadLockError) {
|
|
88
89
|
this.$application.getLogger().warn(TAG, `Deadlock received... retrying transaction`);
|
|
89
90
|
}
|
|
91
|
+
else if (attemptCount < this.$retryLimit && ex instanceof LockWaitTimeoutError) {
|
|
92
|
+
this.$application.getLogger().warn(TAG, `Lock timeout... retrying transaction`);
|
|
93
|
+
// The server does not auto rollback a timeout (it may be configured to do so, but we will assume that it's not)
|
|
94
|
+
await connection.rollback();
|
|
95
|
+
}
|
|
90
96
|
else {
|
|
91
97
|
await connection.rollback();
|
|
92
98
|
throw ex;
|
package/src/api.ts
CHANGED
|
@@ -60,6 +60,7 @@ export {MissingConfigError} from './MissingConfigError';
|
|
|
60
60
|
export {DatabaseQueryError} from './DatabaseQueryError';
|
|
61
61
|
export {NotImplementedError} from './NotImplementedError';
|
|
62
62
|
export {DeadLockError} from './DeadLockError';
|
|
63
|
+
export {LockWaitTimeoutError} from './LockWaitTimeoutError';
|
|
63
64
|
|
|
64
65
|
// HTTP
|
|
65
66
|
export {StatusCode} from './StatusCode';
|