@yolo-croket-dev/core 1.7.12-slowquery.1 → 1.7.12
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/interceptors/logging-service.interceptor.js +2 -2
- package/interceptors/rpc.interceptor.d.ts +1 -0
- package/interceptors/rpc.interceptor.js +20 -20
- package/interfaces/exception.js +3 -3
- package/modules/graceful-shutdown/graceful-shutdown.module.js +2 -2
- package/modules/graceful-shutdown/graceful-shutdown.rmq.d.ts +1 -1
- package/modules/graceful-shutdown/graceful-shutdown.service.js +2 -2
- package/modules/redis.module.js +2 -2
- package/package.json +1 -1
- package/pipes/rpc-validation.pipe.js +2 -2
|
@@ -188,7 +188,7 @@ let LoggingServiceInterceptor = class LoggingServiceInterceptor {
|
|
|
188
188
|
}));
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
|
-
LoggingServiceInterceptor =
|
|
191
|
+
exports.LoggingServiceInterceptor = LoggingServiceInterceptor;
|
|
192
|
+
exports.LoggingServiceInterceptor = LoggingServiceInterceptor = __decorate([
|
|
192
193
|
(0, common_1.Injectable)()
|
|
193
194
|
], LoggingServiceInterceptor);
|
|
194
|
-
exports.LoggingServiceInterceptor = LoggingServiceInterceptor;
|
|
@@ -5,6 +5,7 @@ import { GracefulShutdownService } from '../modules/graceful-shutdown/graceful-s
|
|
|
5
5
|
export declare class RPCInterceptor implements NestInterceptor {
|
|
6
6
|
private readonly reflector;
|
|
7
7
|
private readonly gracefulShutdownService;
|
|
8
|
+
private readonly STATIC_NOT_DEFINE_RETRY_ATTEMPT;
|
|
8
9
|
constructor(reflector: Reflector, gracefulShutdownService: GracefulShutdownService);
|
|
9
10
|
private maxLengthOverShorten;
|
|
10
11
|
private updateMaxLengthArrayShorten;
|
|
@@ -52,6 +52,7 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
52
52
|
constructor(reflector, gracefulShutdownService) {
|
|
53
53
|
this.reflector = reflector;
|
|
54
54
|
this.gracefulShutdownService = gracefulShutdownService;
|
|
55
|
+
this.STATIC_NOT_DEFINE_RETRY_ATTEMPT = 3;
|
|
55
56
|
}
|
|
56
57
|
maxLengthOverShorten(data) {
|
|
57
58
|
if (typeof data !== 'string') {
|
|
@@ -144,7 +145,6 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
144
145
|
const message = rmq.getMessage();
|
|
145
146
|
const now = Date.now();
|
|
146
147
|
const content = JSON.parse(message.content.toString());
|
|
147
|
-
// const traceId = content.data.param ? content.data.param.traceId : null;
|
|
148
148
|
const isInternal = content.data.param ? content.data.param.isInternal : false;
|
|
149
149
|
const isAdmin = content.data.param ? content.data.param.isAdmin : false;
|
|
150
150
|
const reDeliveryCount = Number(message.properties.headers['x-delivery-count']) || 0; /** 몇번 재전달되었는지 */
|
|
@@ -156,10 +156,6 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
156
156
|
traceId: ((_a = content.data.param) === null || _a === void 0 ? void 0 : _a.traceId) || '-',
|
|
157
157
|
correlationId,
|
|
158
158
|
};
|
|
159
|
-
// const logParam = {
|
|
160
|
-
// traceId,
|
|
161
|
-
// method,
|
|
162
|
-
// };
|
|
163
159
|
/** consume 메시지 전부 cancel */
|
|
164
160
|
if (this.gracefulShutdownService.isApplicationExit) {
|
|
165
161
|
msaLogger.debug('RPCInterceptor isApplicationExit called', { traceId: 'IS_APPLICATION_EXIT' });
|
|
@@ -167,24 +163,29 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
167
163
|
return new rxjs_1.Observable();
|
|
168
164
|
}
|
|
169
165
|
if (!staticRetryCount && reDeliveryCount > 0) {
|
|
170
|
-
|
|
166
|
+
// 직접 메시지가 재시도 처리가 된 경우에는 로그만 남기고 처리하지 않음
|
|
167
|
+
msaLogger.debug(`RETRY_COUNT_ZERO_OR_NO_RETRY 발생 전, 재시도 처리 (${reDeliveryCount}/${this.STATIC_NOT_DEFINE_RETRY_ATTEMPT})`, { traceId: ((_b = content.data.param) === null || _b === void 0 ? void 0 : _b.traceId) || 'RETRY_COUNT_ZERO_OR_NO_RETRY' }, {
|
|
168
|
+
messagePattern: method,
|
|
171
169
|
properties: message.properties,
|
|
172
170
|
fields: message.fields,
|
|
173
171
|
time: Date.now(),
|
|
174
172
|
reDeliveryCount,
|
|
175
173
|
staticRetryCount,
|
|
176
174
|
});
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
message
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
175
|
+
// 무한 재시도가 일어날 수 있으므로 재시도 카운트가 지정되지 않은 이벤트의 경우에는 횟수로 재실행 할 수 있도록
|
|
176
|
+
if (reDeliveryCount >= this.STATIC_NOT_DEFINE_RETRY_ATTEMPT) {
|
|
177
|
+
channel.sendToQueue(message.properties.replyTo, Buffer.from(JSON.stringify({
|
|
178
|
+
isError: true,
|
|
179
|
+
message: 'RETRY_COUNT_ZERO_OR_NO_RETRY',
|
|
180
|
+
status: 500,
|
|
181
|
+
duration: Date.now() - now,
|
|
182
|
+
arg,
|
|
183
|
+
timestamp: new Date(),
|
|
184
|
+
})), { correlationId: message.properties.correlationId });
|
|
185
|
+
channel.nack(message, false, false); /** 아마도 기본 30분 타임아웃이 지나고 새로 들어오면 발생할 예정, DLQ로 이동 */
|
|
186
|
+
message.properties.replyTo = undefined; /** replyTo가 존재하면 sendToQueue가 호출되므로, 삭제해주기 */
|
|
187
|
+
return new rxjs_1.Observable();
|
|
188
|
+
}
|
|
188
189
|
}
|
|
189
190
|
const noAck = message.fields.routingKey.includes('ASYNC');
|
|
190
191
|
let localErrorProcessor = async (err) => {
|
|
@@ -300,7 +301,6 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
300
301
|
// });
|
|
301
302
|
/** 만약 응답데이터중 isRequeue가 true라면, 다시 재처리 하도록 함 */
|
|
302
303
|
if (val.data && val.data.isRequeue) {
|
|
303
|
-
message.properties.headers['x-requeue-reason'] = 'RETRY';
|
|
304
304
|
channel.nack(message, false, true);
|
|
305
305
|
return;
|
|
306
306
|
}
|
|
@@ -314,9 +314,9 @@ let RPCInterceptor = class RPCInterceptor {
|
|
|
314
314
|
}));
|
|
315
315
|
}
|
|
316
316
|
};
|
|
317
|
-
RPCInterceptor =
|
|
317
|
+
exports.RPCInterceptor = RPCInterceptor;
|
|
318
|
+
exports.RPCInterceptor = RPCInterceptor = __decorate([
|
|
318
319
|
(0, common_1.Injectable)(),
|
|
319
320
|
__metadata("design:paramtypes", [core_1.Reflector,
|
|
320
321
|
graceful_shutdown_service_1.GracefulShutdownService])
|
|
321
322
|
], RPCInterceptor);
|
|
322
|
-
exports.RPCInterceptor = RPCInterceptor;
|
package/interfaces/exception.js
CHANGED
|
@@ -18,9 +18,10 @@ var ErrActionTypeEnum;
|
|
|
18
18
|
ErrActionTypeEnum["LEGACY_SHOW_TOAST"] = "LEGACY_SHOW_TOAST";
|
|
19
19
|
ErrActionTypeEnum["FORCE_UPDATE"] = "FORCE_UPDATE";
|
|
20
20
|
ErrActionTypeEnum["UPDATE_ACCESS_TOKEN"] = "UPDATE_ACCESS_TOKEN";
|
|
21
|
-
})(ErrActionTypeEnum
|
|
21
|
+
})(ErrActionTypeEnum || (exports.ErrActionTypeEnum = ErrActionTypeEnum = {}));
|
|
22
22
|
class ErrAction {
|
|
23
23
|
}
|
|
24
|
+
exports.ErrAction = ErrAction;
|
|
24
25
|
__decorate([
|
|
25
26
|
(0, swagger_1.ApiProperty)({
|
|
26
27
|
description: '액션 타입',
|
|
@@ -57,9 +58,9 @@ __decorate([
|
|
|
57
58
|
}),
|
|
58
59
|
__metadata("design:type", String)
|
|
59
60
|
], ErrAction.prototype, "webViewUrl", void 0);
|
|
60
|
-
exports.ErrAction = ErrAction;
|
|
61
61
|
class ErrInfo {
|
|
62
62
|
}
|
|
63
|
+
exports.ErrInfo = ErrInfo;
|
|
63
64
|
__decorate([
|
|
64
65
|
(0, swagger_1.ApiProperty)({
|
|
65
66
|
description: '에러 종류 식별자',
|
|
@@ -81,4 +82,3 @@ __decorate([
|
|
|
81
82
|
}),
|
|
82
83
|
__metadata("design:type", ErrAction)
|
|
83
84
|
], ErrInfo.prototype, "action", void 0);
|
|
84
|
-
exports.ErrInfo = ErrInfo;
|
|
@@ -11,11 +11,11 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const graceful_shutdown_service_1 = require("./graceful-shutdown.service");
|
|
12
12
|
let GracefulShutdownModule = class GracefulShutdownModule {
|
|
13
13
|
};
|
|
14
|
-
GracefulShutdownModule =
|
|
14
|
+
exports.GracefulShutdownModule = GracefulShutdownModule;
|
|
15
|
+
exports.GracefulShutdownModule = GracefulShutdownModule = __decorate([
|
|
15
16
|
(0, common_1.Global)(),
|
|
16
17
|
(0, common_1.Module)({
|
|
17
18
|
providers: [graceful_shutdown_service_1.GracefulShutdownService],
|
|
18
19
|
exports: [graceful_shutdown_service_1.GracefulShutdownService],
|
|
19
20
|
})
|
|
20
21
|
], GracefulShutdownModule);
|
|
21
|
-
exports.GracefulShutdownModule = GracefulShutdownModule;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RmqOptions, ServerRMQ } from '@nestjs/microservices';
|
|
2
2
|
import { Channel } from 'amqp-connection-manager';
|
|
3
3
|
import { ConsumeMessage } from 'amqplib';
|
|
4
|
-
export
|
|
4
|
+
export type GracefulRmqOptions = RmqOptions['options'] & {
|
|
5
5
|
waitingEndingHandlersTimeoutMs?: number;
|
|
6
6
|
waitingEndingHandlersIntervalMs?: number;
|
|
7
7
|
};
|
|
@@ -94,7 +94,7 @@ let GracefulShutdownService = class GracefulShutdownService {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
|
-
GracefulShutdownService =
|
|
97
|
+
exports.GracefulShutdownService = GracefulShutdownService;
|
|
98
|
+
exports.GracefulShutdownService = GracefulShutdownService = __decorate([
|
|
98
99
|
(0, common_1.Injectable)()
|
|
99
100
|
], GracefulShutdownService);
|
|
100
|
-
exports.GracefulShutdownService = GracefulShutdownService;
|
package/modules/redis.module.js
CHANGED
|
@@ -15,10 +15,10 @@ const redisProvider = {
|
|
|
15
15
|
};
|
|
16
16
|
let RedisModule = class RedisModule {
|
|
17
17
|
};
|
|
18
|
-
RedisModule =
|
|
18
|
+
exports.RedisModule = RedisModule;
|
|
19
|
+
exports.RedisModule = RedisModule = __decorate([
|
|
19
20
|
(0, common_1.Module)({
|
|
20
21
|
providers: [redisProvider],
|
|
21
22
|
exports: [redisProvider],
|
|
22
23
|
})
|
|
23
24
|
], RedisModule);
|
|
24
|
-
exports.RedisModule = RedisModule;
|
package/package.json
CHANGED
|
@@ -31,8 +31,8 @@ let ValidationPipe = class ValidationPipe {
|
|
|
31
31
|
return value;
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
ValidationPipe =
|
|
34
|
+
exports.ValidationPipe = ValidationPipe;
|
|
35
|
+
exports.ValidationPipe = ValidationPipe = __decorate([
|
|
35
36
|
(0, common_1.Injectable)(),
|
|
36
37
|
__metadata("design:paramtypes", [Object])
|
|
37
38
|
], ValidationPipe);
|
|
38
|
-
exports.ValidationPipe = ValidationPipe;
|