aws / aws/aws-lambda-java-libs

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

Đang mở
#224 2 bình luận 2 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
548
Fork
241
Merge trung bình
2 ngày 5 phút
Pull request đã merge (30 ngày)
11

Mô tả

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?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.