@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.
Files changed (81) hide show
  1. package/CHANGELOG.md +20 -23
  2. package/docs/README.md +6 -5
  3. package/docs/classes/Application.md +26 -26
  4. package/docs/classes/BackendAuthenticationMiddleware.md +2 -2
  5. package/docs/classes/CORSMiddleware.md +6 -6
  6. package/docs/classes/ConfigLoader.md +1 -1
  7. package/docs/classes/Database.md +12 -12
  8. package/docs/classes/DatabaseCastObject.md +3 -3
  9. package/docs/classes/DatabaseConnection.md +19 -19
  10. package/docs/classes/DatabaseQueryError.md +12 -10
  11. package/docs/classes/DeadLockError.md +10 -10
  12. package/docs/classes/DiskSpaceError.md +10 -10
  13. package/docs/classes/DropTemporaryTableQuery.md +8 -8
  14. package/docs/classes/DumpStream.md +1 -1
  15. package/docs/classes/DuplicateEntryError.md +10 -10
  16. package/docs/classes/EntityNotFoundError.md +10 -10
  17. package/docs/classes/ExpiredTokenError.md +10 -10
  18. package/docs/classes/Handler.md +13 -13
  19. package/docs/classes/InternalError.md +10 -10
  20. package/docs/classes/InvalidCredentialsError.md +10 -10
  21. package/docs/classes/InvalidValueError.md +10 -10
  22. package/docs/classes/LineString.md +4 -4
  23. package/docs/classes/LockWaitTimeoutError.md +349 -0
  24. package/docs/classes/ManagedDatabaseConnection.md +19 -19
  25. package/docs/classes/Middleware.md +3 -3
  26. package/docs/classes/MissingConfigError.md +10 -10
  27. package/docs/classes/MissingParameterError.md +10 -10
  28. package/docs/classes/MySQLConnection.md +20 -20
  29. package/docs/classes/MySQLDatabase.md +13 -13
  30. package/docs/classes/NotImplementedError.md +10 -10
  31. package/docs/classes/Point.md +4 -4
  32. package/docs/classes/Polygon.md +4 -4
  33. package/docs/classes/Query.md +8 -8
  34. package/docs/classes/RawError.md +10 -10
  35. package/docs/classes/RawQuery.md +8 -8
  36. package/docs/classes/Request.md +18 -18
  37. package/docs/classes/Response.md +11 -11
  38. package/docs/classes/ResponseData.md +7 -7
  39. package/docs/classes/ServiceProvider.md +15 -15
  40. package/docs/classes/ServiceResponse.md +5 -5
  41. package/docs/classes/SetSessionVariableQuery.md +8 -8
  42. package/docs/classes/StormError.md +10 -10
  43. package/docs/classes/TemporaryTableQuery.md +8 -8
  44. package/docs/classes/Token.md +2 -2
  45. package/docs/classes/TokenManager.md +4 -4
  46. package/docs/classes/Transaction.md +6 -6
  47. package/docs/classes/UnauthorizedAccessError.md +10 -10
  48. package/docs/enums/ErrorCode.md +9 -9
  49. package/docs/enums/ExitCode.md +2 -2
  50. package/docs/enums/HTTPMethod.md +4 -4
  51. package/docs/enums/IsolationLevel.md +4 -4
  52. package/docs/enums/JWTError.md +2 -2
  53. package/docs/enums/StatusCode.md +48 -48
  54. package/docs/interfaces/IConfig.md +8 -8
  55. package/docs/interfaces/IDatabaseConfig.md +6 -6
  56. package/docs/interfaces/IDatabaseConnection.md +14 -14
  57. package/docs/interfaces/IErrorResponse.md +5 -5
  58. package/docs/interfaces/IFormData.md +2 -2
  59. package/docs/interfaces/IHandler.md +1 -1
  60. package/docs/interfaces/IInsertQueryResult.md +3 -3
  61. package/docs/interfaces/IJWTVerifyOptions.md +1 -1
  62. package/docs/interfaces/IQueryable.md +5 -5
  63. package/docs/interfaces/IRequestResponse.md +2 -2
  64. package/docs/interfaces/ISetSessionVariableQueryInput.md +2 -2
  65. package/docs/interfaces/ITemporaryTableQueryInput.md +2 -2
  66. package/docs/interfaces/IUpdateQueryResult.md +2 -2
  67. package/lib/LockWaitTimeoutError.d.ts +6 -0
  68. package/lib/LockWaitTimeoutError.js +26 -0
  69. package/lib/LockWaitTimeoutError.js.map +1 -0
  70. package/lib/MySQLConnection.js +7 -0
  71. package/lib/MySQLConnection.js.map +1 -1
  72. package/lib/Transaction.js +6 -0
  73. package/lib/Transaction.js.map +1 -1
  74. package/lib/api.d.ts +1 -0
  75. package/lib/api.js +4 -2
  76. package/lib/api.js.map +1 -1
  77. package/package.json +16 -16
  78. package/src/LockWaitTimeoutError.ts +22 -0
  79. package/src/MySQLConnection.ts +7 -0
  80. package/src/Transaction.ts +6 -0
  81. 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/3748147/src/IFormData.ts#L20)
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/3748147/src/IFormData.ts#L21)
30
+ [src/IFormData.ts:21](https://github.com/breautek/storm/blob/d45307d/src/IFormData.ts#L21)
@@ -28,4 +28,4 @@
28
28
 
29
29
  #### Defined in
30
30
 
31
- [src/IHandler.ts:21](https://github.com/breautek/storm/blob/3748147/src/IHandler.ts#L21)
31
+ [src/IHandler.ts:21](https://github.com/breautek/storm/blob/d45307d/src/IHandler.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/3748147/src/IInsertQueryResult.ts#L19)
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/3748147/src/IInsertQueryResult.ts#L20)
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/3748147/src/IInsertQueryResult.ts#L18)
41
+ [src/IInsertQueryResult.ts:18](https://github.com/breautek/storm/blob/d45307d/src/IInsertQueryResult.ts#L18)
@@ -16,4 +16,4 @@
16
16
 
17
17
  #### Defined in
18
18
 
19
- [src/IJWTVerifyOptions.ts:18](https://github.com/breautek/storm/blob/3748147/src/IJWTVerifyOptions.ts#L18)
19
+ [src/IJWTVerifyOptions.ts:18](https://github.com/breautek/storm/blob/d45307d/src/IJWTVerifyOptions.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/3748147/src/IQueryable.ts#L22)
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/3748147/src/IQueryable.ts#L23)
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/3748147/src/IQueryable.ts#L21)
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/3748147/src/IQueryable.ts#L24)
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/3748147/src/IQueryable.ts#L20)
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/3748147/src/IRequestResponse.ts#L21)
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/3748147/src/IRequestResponse.ts#L22)
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/3748147/src/SetSessionVariableQuery.ts#L7)
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/3748147/src/SetSessionVariableQuery.ts#L8)
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/3748147/src/TemporaryTableQuery.ts#L22)
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/3748147/src/TemporaryTableQuery.ts#L21)
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/3748147/src/IUpdateQueryResult.ts#L18)
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/3748147/src/IUpdateQueryResult.ts#L19)
30
+ [src/IUpdateQueryResult.ts:19](https://github.com/breautek/storm/blob/d45307d/src/IUpdateQueryResult.ts#L19)
@@ -0,0 +1,6 @@
1
+ import { DatabaseQueryError } from './DatabaseQueryError';
2
+ /**
3
+ * DeadLockError is a DatabaseQueryError but is subclasses for typing purposes.
4
+ */
5
+ export declare class LockWaitTimeoutError extends DatabaseQueryError {
6
+ }
@@ -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"}
@@ -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":"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"}
1
+ {"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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;AAExD,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;oBACD,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC5B,MAAM,EAAE,CAAC;iBACZ;aACJ;SACJ,QAAQ,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;IAC9C,CAAC;CACJ;AA7DD,kCA6DC"}
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.LineString = 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.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 = 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;AAErB,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"}
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.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.15",
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.11.18",
54
- "@types/uuid": "9.0.0",
53
+ "@types/node": "18.15.0",
54
+ "@types/uuid": "9.0.1",
55
55
  "ajv": "8.12.0",
56
- "body-parser": "1.20.1",
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.0.6",
64
- "tslib": "2.4.1",
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.8",
73
- "@types/jest": "29.2.6",
74
- "@typescript-eslint/eslint-plugin": "5.48.2",
75
- "@typescript-eslint/parser": "5.48.2",
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.32.0",
78
- "jest": "29.3.1",
79
- "jest-jasmine2": "29.3.1",
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.24",
82
+ "typedoc": "0.23.26",
83
83
  "typedoc-plugin-markdown": "3.14.0",
84
- "typescript": "4.9.4"
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 {}
@@ -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
  }
@@ -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';