You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2024/11/01 02:24:44 UTC
(james-project) 02/02: [ENHANCEMENT] mailUserAgent in IMAP MDC
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7db768a5407b7dae34d00f3089eb623ad299c26b
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Tue Oct 29 22:31:17 2024 +0100
[ENHANCEMENT] mailUserAgent in IMAP MDC
Ease debugging
---
.../apache/james/imap/processor/IdProcessor.java | 23 +++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
index a0c00e8520..c1011a2dea 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdProcessor.java
@@ -41,6 +41,7 @@ import com.google.common.collect.ImmutableList;
import reactor.core.publisher.Mono;
public class IdProcessor extends AbstractMailboxProcessor<IDRequest> implements CapabilityImplementingProcessor {
+ public static final String MDC_KEY = "bound_MDC";
private static final Logger LOGGER = LoggerFactory.getLogger(IdProcessor.class);
private static final ImmutableList<Capability> CAPABILITIES = ImmutableList.of(Capability.of("ID"));
@@ -53,12 +54,28 @@ public class IdProcessor extends AbstractMailboxProcessor<IDRequest> implements
protected Mono<Void> processRequestReactive(IDRequest request, ImapSession session, Responder responder) {
responder.respond(new IdResponse());
- return ReactorUtils.logAsMono(() -> MDCStructuredLogger.forLogger(LOGGER)
- .field("parameters", request.getParameters().map(Object::toString).orElse("NIL"))
- .log(logger -> logger.info("Received id information"))).then(unsolicitedResponses(session, responder, false))
+ String mailUserAgent = request.getParameters().map(Object::toString).orElse("NIL");
+ addMailUserAgentToMDC(session, mailUserAgent);
+
+ return logMailUserAgent(mailUserAgent)
+ .then(unsolicitedResponses(session, responder, false))
.then(Mono.fromRunnable(() -> okComplete(request, responder)));
}
+ private Mono<Void> logMailUserAgent(String mailUserAgent) {
+ return ReactorUtils.logAsMono(() -> MDCStructuredLogger.forLogger(LOGGER)
+ .field("parameters", mailUserAgent)
+ .log(logger -> logger.info("Received id information")));
+ }
+
+ private void addMailUserAgentToMDC(ImapSession session, String mailUserAgent) {
+ Object maybeMDC = session.getAttribute(MDC_KEY);
+ if (maybeMDC instanceof MDCBuilder boundMDC) {
+ MDCBuilder newMDC = boundMDC.addToContext("mailUserAgent", mailUserAgent);
+ session.setAttribute(MDC_KEY, newMDC);
+ }
+ }
+
@Override
protected MDCBuilder mdc(IDRequest message) {
return MDCBuilder.create()
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org