From 037fcd63026c09137a1ece922ca44d9efcca90c1 Mon Sep 17 00:00:00 2001 From: curry772 Date: Fri, 5 Jun 2026 14:05:10 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20TxSiftContext=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20HttpAdapterServiceSupport=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TxSiftContext 클래스 추가: SIFT MDC 등록/해제 및 appender close 공통 처리 - begin(): isSiftEnabled() 확인 후 MDC 등록, 이미 설정된 경우 스킵 - end(): appender 즉시 close 후 MDC 제거 (UUID 등 1회성 key 용도) - HttpAdapterServiceSupport: MDC 직접 제어 코드를 TxSiftContext.begin/end로 교체 --- .../dynamic/HttpAdapterServiceSupport.java | 8 ++--- .../eai/common/util/TxSiftContext.java | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/eactive/eai/common/util/TxSiftContext.java diff --git a/src/main/java/com/eactive/eai/adapter/http/dynamic/HttpAdapterServiceSupport.java b/src/main/java/com/eactive/eai/adapter/http/dynamic/HttpAdapterServiceSupport.java index 1f9c566..794a0b6 100644 --- a/src/main/java/com/eactive/eai/adapter/http/dynamic/HttpAdapterServiceSupport.java +++ b/src/main/java/com/eactive/eai/adapter/http/dynamic/HttpAdapterServiceSupport.java @@ -19,6 +19,7 @@ import com.eactive.eai.adapter.http.dynamic.filter.HttpAdapterFilterType; import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException; import com.eactive.eai.common.TransactionContextKeys; import com.eactive.eai.common.util.Logger; +import com.eactive.eai.common.util.TxSiftContext; import com.eactive.eai.common.util.UUIDGenerator; public abstract class HttpAdapterServiceSupport implements HttpAdapterService, HttpAdapterServiceKey { @@ -37,10 +38,7 @@ public abstract class HttpAdapterServiceSupport implements HttpAdapterService, H prop.setProperty(TransactionContextKeys.TRANSACTION_UUID, uuid); } - if(MDC.get(Logger.DISCRIMINATOR) == null) { - MDC.put(Logger.DISCRIMINATOR, uuid); - bMDCput = true; - } + bMDCput = TxSiftContext.begin(uuid); try { String transactionId = request.getHeader(HttpClientAdapterServiceKey.TRANSACTION_ID); @@ -93,7 +91,7 @@ public abstract class HttpAdapterServiceSupport implements HttpAdapterService, H } } finally { if(bMDCput) - MDC.remove(Logger.DISCRIMINATOR); + TxSiftContext.end(); } } diff --git a/src/main/java/com/eactive/eai/common/util/TxSiftContext.java b/src/main/java/com/eactive/eai/common/util/TxSiftContext.java new file mode 100644 index 0000000..65af989 --- /dev/null +++ b/src/main/java/com/eactive/eai/common/util/TxSiftContext.java @@ -0,0 +1,31 @@ +package com.eactive.eai.common.util; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; + +public class TxSiftContext { + + /** + * 거래 시작 시 SIFT discriminator를 MDC에 등록한다. + * SIFT가 비활성화 상태이면 아무 작업도 하지 않는다. + */ + public static boolean begin(String discriminatingValue) { + if (!Logger.isSiftEnabled()) return false; + if(MDC.get(Logger.DISCRIMINATOR) == null) { + MDC.put(Logger.DISCRIMINATOR, discriminatingValue); + return true; + } + return false; + } + + /** + * 거래 종료 시 MDC에 등록된 SIFT appender를 닫고 MDC를 정리한다. + * begin() 에서 MDC가 설정되지 않았으면 아무 작업도 하지 않는다. + */ + public static void end() { + String discriminatingValue = MDC.get(Logger.DISCRIMINATOR); + if (StringUtils.isBlank(discriminatingValue)) return; + Logger.closeSiftAppender(discriminatingValue); + MDC.remove(Logger.DISCRIMINATOR); + } +}