This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch fix/CAMEL-24157 in repository https://gitbox.apache.org/repos/asf/camel.git
commit f88876e836bd2edb672e40fb0b185e126d9ea0c3 Author: Claus Ibsen <[email protected]> AuthorDate: Fri Jul 17 17:42:26 2026 +0200 CAMEL-24157: camel-aws2-ddb - Fix empty array mapping, Scan consistentRead, and table-creation retry Map empty JSON arrays to DynamoDB List type (L) instead of empty StringSet which DynamoDB rejects. Use Number type check for list elements to match prior CAMEL-24156 fix on scalar values. Add missing consistentRead to ScanCommand matching GetItem/Query/ExecuteStatement. Fix table-creation wait loop to catch ResourceNotFoundException by type instead of unreliable string matching against SDK v2 messages. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../main/java/org/apache/camel/component/aws2/ddb/Ddb2Endpoint.java | 6 +++--- .../main/java/org/apache/camel/component/aws2/ddb/ScanCommand.java | 3 ++- .../component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/Ddb2Endpoint.java b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/Ddb2Endpoint.java index 33451093f7d5..ace1cb5f07ed 100644 --- a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/Ddb2Endpoint.java +++ b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/Ddb2Endpoint.java @@ -171,10 +171,10 @@ public class Ddb2Endpoint extends ScheduledPollEndpoint implements EndpointServi return true; } LOG.trace("Table [{}] not active yet", tableName); + } catch (ResourceNotFoundException e) { + // table may not be visible yet due to eventual consistency } catch (AwsServiceException ase) { - if (!ase.getMessage().contains("ResourceNotFoundException")) { - throw ase; - } + throw ase; } return false; } diff --git a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/ScanCommand.java b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/ScanCommand.java index 255a97d9a988..db9fa1b14652 100644 --- a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/ScanCommand.java +++ b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/ScanCommand.java @@ -39,7 +39,8 @@ public class ScanCommand extends AbstractDdbCommand { .limit(determineLimit()) .exclusiveStartKey(determineExclusiveStartKey()) .attributesToGet(determineAttributeNames()) - .scanFilter(determineScanFilter()); + .scanFilter(determineScanFilter()) + .consistentRead(determineConsistentRead()); // Check if we have set an Index Name String indexName = determineIndexName(); diff --git a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java index 123c85a03066..80f2e2aac2ee 100644 --- a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java +++ b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java @@ -219,8 +219,8 @@ public class Ddb2JsonDataTypeTransformer extends Transformer { List<?> values = (List<?>) value; if (values.isEmpty()) { - return AttributeValue.builder().ss().build(); - } else if (values.get(0) instanceof Integer) { + return AttributeValue.builder().l(List.of()).build(); + } else if (values.get(0) instanceof Number) { return AttributeValue.builder().ns(values.stream().map(Object::toString).collect(Collectors.toList())).build(); } else { return AttributeValue.builder().ss(values.stream().map(Object::toString).collect(Collectors.toList())).build();
