You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Federico Mariani (Jira)" <ji...@apache.org> on 2026/07/16 09:37:00 UTC
[jira] [Created] (CAMEL-24159) camel-azure - Umbrella: medium-severity findings from July 2026 review (incl. cross-module credentialType override)
Federico Mariani created CAMEL-24159:
----------------------------------------
Summary: camel-azure - Umbrella: medium-severity findings from July 2026 review (incl. cross-module credentialType override)
Key: CAMEL-24159
URL: https://issues.apache.org/jira/browse/CAMEL-24159
Project: Camel
Issue Type: Bug
Components: camel-azure-servicebus, camel-azure, camel-azure-eventhubs
Reporter: Federico Mariani
Attachments: camel-azure-review-2026-07.md
Umbrella for the medium-severity findings of the July 2026 review of the camel-azure flagship components on main (4.22.0-SNAPSHOT). Full findings document attached; low-severity findings are listed in the document only.
*Cross-cutting (all five modules)* — the CAMEL-21871 credential autowiring silently overrides an *explicitly configured* {{credentialType}}:
# blob {{BlobComponent:84-97}} — autowired StorageSharedKeyCredential clobbers explicit {{credentialType=AZURE_SAS}}.
# servicebus {{ServiceBusComponent:59-68}} + {{ServiceBusClientFactory:45-49}} — additionally a user-supplied DefaultAzureCredential (managedIdentityClientId, tenant...) is discarded and a fresh DefaultAzureCredentialBuilder().build() used instead.
# eventhubs {{EventHubsComponent:52-66}} — autowired TokenCredential overrides explicit CONNECTION_STRING and produces a misleading "Namespace and EventHub name must be set" startup error.
# storage-queue {{QueueComponent:69-78}} — same override; QueueClientFactory also prefers the credential's accountName over the URI's (wrong storage account).
# storage-datalake {{DataLakeComponent:66-82}} + {{DataLakeClientFactory:42-67}} — same override; additionally plain {{accountKey}}/{{sasSignature}} (as used in the component doc examples) are not mapped to a credential type -> baffling ClientSecretCredential startup error, and the factory silently returns a null client on missing secrets (obscure NPE at first poll).
Suggested direction: only derive/override credentialType when the user did not set it explicitly; map accountKey/sasSignature to the matching type.
*camel-azure-servicebus*
# {{ServiceBusConsumer:73-107,137-154}} — route stop/start leaks the processor client (doStart recreates unconditionally; doStop per CAMEL-23260 only calls stop()) and accumulates lock-renewal period tasks.
# {{ServiceBusProducer:101-108}} / {{ServiceBusConsumer:167-170}} — user-provided (and autowired) sender/processor clients are closed by the endpoint on stop; same pattern in eventhubs {{EventHubsProducer:41-69}}.
# {{ServicebusCloudEventDataTypeTransformer:54-56}} — CE content type set to Boolean {{true}} ({{containsKey}} result) instead of the header value (since CAMEL-20450).
# {{ServiceBusProducer:126-132,224-231}} — producer mutates the user/consumer-supplied APPLICATION_PROPERTIES map in place (UnsupportedOperationException on immutable maps; retroactively mutates the received message when bridging).
# {{ServiceBusConsumer:122-123}} — maxConcurrentCalls provides no backpressure for async routes; unbounded in-flight growth, then mass duplicates once lock-renewal windows lapse (follow-up to CAMEL-23937).
*camel-azure-eventhubs*
# {{EventHubsConsumer:211-236}} — unsynchronized lastTask/lastScheduledTask mutation races; cancelled-but-referenced task swallows checkpoint updates.
# {{EventHubsConsumer:233}} + {{EventHubsCheckpointUpdaterTask:47}} — checkpoint failures logged at DEBUG only; silent unbounded replay when the checkpoint store breaks.
*camel-azure-storage-queue*
# {{QueueOperations:82-86}} — {{createQueue=true}} calls create (not createIfNotExists) on every send; permanent 409 when the queue was pre-created with metadata.
*camel-azure-storage-blob*
# {{BlobOperations:451-454}} — copyBlob validates the source account name twice, never the source container name (CAMEL-17161 copy-paste).
# {{BlobChangeFeedOperations:46-50}} — changeFeedStartTime/EndTime ignored unless both are set; one bound -> whole change feed returned.
# {{BlobCommonRequestOptions:57-60}} — ClassCastException when the documented BlobRequestConditions header is used with append/page blob operations (unchecked generic cast to SDK subtypes).
# {{BlobOperations:157-168}} — consumer with fileDir: FileAlreadyExistsException on every poll after the first and NoSuchFileException for nested blob names (same class as the datalake consumer bug).
*camel-azure-storage-datalake*
# {{DataLakeUtils:38-47}} — appendToFile length probing calls reset() without mark(); breaks BufferedInputStream and rejects spooled stream caches; buffers whole payload in memory.
# {{DataLakeEndpoint:45-46,94-102}} — URI option {{dataLakeServiceClient}} is dead (unconditionally overwritten in doStart).
# {{DataLakeFileOperations:163-168}} — consecutive appendToFile calls compute the offset from the committed size only; second append overwrites the first (unverified against live service).
# {{DataLakeConfiguration:105-107}} — generated catalog lists bogus operation enum values ("listFileSystem, listFiles"); camel-jbang validate / IDEs reject every real operation.
_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)