Federico Mariani created CAMEL-24157:
----------------------------------------
Summary: camel-aws2 - Umbrella: medium-severity findings from July
2026 review (S3, SQS, SNS, Kinesis, DDB)
Key: CAMEL-24157
URL: https://issues.apache.org/jira/browse/CAMEL-24157
Project: Camel
Issue Type: Bug
Components: camel-aws
Reporter: Federico Mariani
Attachments: camel-aws-review-2026-07.md
Umbrella for the medium-severity findings of the July 2026 review of the
camel-aws2 flagship components on main (4.22.0-SNAPSHOT). Full findings
document attached to this issue and to the high-severity umbrella; low-severity
findings are listed in the document only.
*camel-aws2-s3*
# {{AWS2S3Consumer:148-166}} — truncated-list pagination fallback feeds an
object key into the ListObjectsV2 {{continuationToken}} (V1 leftover from
CAMEL-22291 after the CAMEL-23132 migration); breaks against S3-compatible
stores that omit nextContinuationToken. Should use {{startAfter}}.
# {{AWS2S3Producer:632-680}} / {{AWS2S3Consumer:128}} — SSE-C customer key not
applied on producer getObject/getObjectRange nor the consumer fileName path;
SSE-C objects unreadable (400).
# {{AWS2S3Consumer:366-390}} — {{removePrefixOnMove}} treats the prefix as a
regex (PatternSyntaxException/NPE) and the failure also skips deleteAfterRead
-> endless reprocessing.
# {{AWS2S3Producer:1086-1109}} — presigner
(createDownloadLink/createUploadLink) ignores session/profile credentials and
NPEs when region is unset.
# {{AWS2S3Endpoint:66}} — {{maxConnections}} option documented but never
applied to the S3 client.
# {{AWS2S3StreamUploadProducer:133-184}} — uploadAggregate read/mutated outside
the lock (NPE race with the timeout task); an exception in the scheduled task
permanently cancels timeout flushes.
*camel-aws2-sqs*
# {{Sqs2Consumer:597,655-671}} — QueueDoesNotExistException silently swallowed
when {{maxMessagesPerPoll > 10}} (error only propagated when every parallel
request failed, but the missing-queue path flags at most one).
# {{Sqs2Consumer:302-363,578-587}} — consumer stop/start cycle leaks the
PollingTask thread pool and keeps the visibility-extender period task scheduled
(cleanup only in doShutdown).
# {{Sqs2Producer:119-174}} — sendBatchMessage does not chunk to the SQS
10-entry batch limit (11+ entries fail wholesale); empty iterables and
non-String elements also unhandled.
# {{Sqs2Producer:64-70}} — FIFO producer requires messageGroupIdStrategy even
for purgeQueue/deleteQueue/listQueues operations (cf. CAMEL-18123).
*camel-aws2-sns*
# {{Sns2Endpoint:176}} — {{subscribeSNStoSQS}} queueArn validation is dead
code: {{isNotEmpty(isNotEmpty(queueArn))}} is always true (present since
CAMEL-14552); stale error message too.
# {{Sns2Endpoint:140-145}} — {{serverSideEncryptionEnabled=true}} without
kmsMasterKeyId silently creates the topic unencrypted.
# {{Sns2ProducerHealthCheck:40-46}} — health check permanently DOWN when region
is unset ({{Region.of(null)}} throws) and requires sns:ListSubscriptions that
publish-only roles lack.
*camel-aws2-kinesis*
# {{Kinesis2Consumer:108-141}} — fixed-shardId consumer calls DescribeStream on
every poll (10 TPS account limit; >100-shard streams fail to find the shard).
# {{Kinesis2Producer:77-122}} — batch producer applies a single partition key
to all records; whole batch pinned to one shard.
*camel-aws2-ddb*
# {{Ddb2JsonDataTypeTransformer:220-222}} — empty JSON arrays map to an empty
StringSet, which DynamoDB rejects.
# {{ScanCommand:37-42}} — Scan ignores the {{consistentRead}} option (Get/Query
apply it).
# {{Ddb2Endpoint:173-178}} — table-creation wait loop's RNFE retry guard can
never match (SDK v2 messages never contain the exception class name);
documented DescribeTable eventual-consistency tolerance is dead code.
_This issue was researched and filed by Claude Code (AI) on behalf of Federico
Mariani (fmariani). Full findings document from the review is attached to the
umbrella issues._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)