From 2b2a33cc35a880fafc569c707674313a56c15811 Mon Sep 17 00:00:00 2001 From: Gengliang Wang Date: Fri, 26 Apr 2024 13:25:15 -0700 Subject: [PATCH] [SPARK-48011][CORE] Store LogKey name as a value to avoid generating new string instances ### What changes were proposed in this pull request? Store LogKey name as a value to avoid generating new string instances ### Why are the changes needed? To save memory usage on getting the names of `LogKey`s. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Existing tests ### Was this patch authored or co-authored using generative AI tooling? No Closes #46249 from gengliangwang/addKeyName. Authored-by: Gengliang Wang Signed-off-by: Dongjoon Hyun --- .../src/main/scala/org/apache/spark/internal/LogKey.scala | 6 +++++- .../src/main/scala/org/apache/spark/internal/Logging.scala | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/common/utils/src/main/scala/org/apache/spark/internal/LogKey.scala b/common/utils/src/main/scala/org/apache/spark/internal/LogKey.scala index 04990ddc4c9d7..2ca80a496ccb9 100644 --- a/common/utils/src/main/scala/org/apache/spark/internal/LogKey.scala +++ b/common/utils/src/main/scala/org/apache/spark/internal/LogKey.scala @@ -16,10 +16,14 @@ */ package org.apache.spark.internal +import java.util.Locale + /** * All structured logging `keys` used in `MDC` must be extends `LogKey` */ -trait LogKey +trait LogKey { + val name: String = this.toString.toLowerCase(Locale.ROOT) +} /** * Various keys used for mapped diagnostic contexts(MDC) in logging. diff --git a/common/utils/src/main/scala/org/apache/spark/internal/Logging.scala b/common/utils/src/main/scala/org/apache/spark/internal/Logging.scala index 085b22bee5f36..24a60f88c24ac 100644 --- a/common/utils/src/main/scala/org/apache/spark/internal/Logging.scala +++ b/common/utils/src/main/scala/org/apache/spark/internal/Logging.scala @@ -17,8 +17,6 @@ package org.apache.spark.internal -import java.util.Locale - import scala.jdk.CollectionConverters._ import org.apache.logging.log4j.{CloseableThreadContext, Level, LogManager} @@ -110,7 +108,7 @@ trait Logging { val value = if (mdc.value != null) mdc.value.toString else null sb.append(value) if (Logging.isStructuredLoggingEnabled) { - context.put(mdc.key.toString.toLowerCase(Locale.ROOT), value) + context.put(mdc.key.name, value) } if (processedParts.hasNext) {