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 c872c4ff8..c96f47f6e 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; + } } }