From ad9837a6496b180839fba7c383b8e5cb5e3451e1 Mon Sep 17 00:00:00 2001 From: Chad Retz Date: Wed, 18 Feb 2026 08:15:39 -0600 Subject: [PATCH] Make search attribute type more lenient when parsing --- .../common/SearchAttributePayloadConverter.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/temporal-sdk/src/main/java/io/temporal/internal/common/SearchAttributePayloadConverter.java b/temporal-sdk/src/main/java/io/temporal/internal/common/SearchAttributePayloadConverter.java index c872c4ff86..c96f47f6eb 100644 --- a/temporal-sdk/src/main/java/io/temporal/internal/common/SearchAttributePayloadConverter.java +++ b/temporal-sdk/src/main/java/io/temporal/internal/common/SearchAttributePayloadConverter.java @@ -331,13 +331,19 @@ private static String indexValueTypeToEncodedValue(@Nonnull IndexedValueType ind @Nullable private static IndexedValueType encodedValueToIndexValueType(String encodedValue) { + // The type metadata is usually in PascalCase (e.g. "KeywordList") but in rare cases may be in + // SCREAMING_SNAKE_CASE (e.g. "INDEXED_VALUE_TYPE_KEYWORD_LIST"). try { return IndexedValueType.valueOf( ProtoEnumNameUtils.simplifiedToUniqueName( encodedValue, ProtoEnumNameUtils.INDEXED_VALUE_TYPE_PREFIX)); } catch (IllegalArgumentException e) { - log.warn("[BUG] No IndexedValueType mapping for {} value exist", encodedValue); - return null; + try { + return IndexedValueType.valueOf(encodedValue); + } catch (IllegalArgumentException e2) { + log.warn("[BUG] No IndexedValueType mapping for {} value exist", encodedValue); + return null; + } } }