aws / aws/aws-lambda-java-libs

DynamodbAttributeValueTransformer causing break in functionality for empty list when transforming (v2)

Abierto
#224 2 comentarios 2 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
548
Forks
241
Merge medio
2 d 5 min
PR fusionados (30 d)
11

Descripción

I'm using DynamoDb Enhanced library version `2.15.82`. Recently, `aws-lambda-java-events-sdk-transformer` version `3.0.2` causes a break in the functionality when trying to transform empty list. Empty list is transformed to `null` which for DynamoDb Enhanced library expects an empty list, and causes DynamoDB Enhanced library to throw the below stack trace.

```
java.lang.IllegalStateException: Unable to convert attribute value: AttributeValue()
software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.EnhancedAttributeValue.fromAttributeValue(EnhancedAttributeValue.java:352) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ListAttributeConverter$Delegate.transformTo(ListAttributeConverter.java:154) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ListAttributeConverter.transformTo(ListAttributeConverter.java:120) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ListAttributeConverter.transformTo(ListAttributeConverter.java:82) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.internal.mapper.StaticAttributeType.attributeValueToObject(StaticAttributeType.java:44) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.internal.mapper.ResolvedImmutableAttribute.lambda$create$1(ResolvedImmutableAttribute.java:61) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema.mapToItem(StaticImmutableTableSchema.java:458) ~[dynamodb-enhanced-2.15.82.jar:na]
software.amazon.awssdk.enhanced.dynamodb.mapper.WrappedTableSchema.mapToItem(WrappedTableSchema.java:54) ~[dynamodb-enhanced-2.15.82.jar:na]
```

Further investigation points to the below code in `DynamodbAttributeValueTransformer` that's causing the issue
```
else if (Objects.nonNull(value.getL())) {
return AttributeValue.builder()
.l(value.getL().isEmpty()
? null
: value.getL().stream()
.map(DynamodbAttributeValueTransformer::toAttributeValueV2)
.collect(Collectors.toList()))
.build();

}
```

I noticed this change happens from `aws-lambda-java-events-sdk-transformer` version `2.0.8` to `3.0.0` on commit `3e71a17c57ba6c99734c4633a4f412fd2d5b6b42`

Any advice on this? Is there a reason for this code change that causes a break in functionality?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.