[
https://issues.apache.org/jira/browse/CAMEL-24347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-24347 started by Andrea Cosentino.
------------------------------------------------
> camel-google-firestore: listCollections ignores the configured documentId and
> the realtime queue is unbounded
> -------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24347
> URL: https://issues.apache.org/jira/browse/CAMEL-24347
> Project: Camel
> Issue Type: Bug
> Components: camel-google
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Minor
>
> 1. {{listCollections}} is the only document operation that does not fall back
> to the configured documentId:
> {code:java}
> // GoogleFirestoreProducer.java:307
> String documentId =
> exchange.getIn().getHeader(GoogleFirestoreConstants.DOCUMENT_ID,
> String.class);
> {code}
> Every other operation uses {{determineDocumentId()}} (:387-396), which falls
> back to {{configuration.getDocumentId()}}. So
> {{google-firestore:coll?documentId=x&operation=listCollections}} silently
> lists the root collections instead of the document's sub-collections.
> 2. The realtime consumer queues without bound:
> {code:java}
> // GoogleFirestoreConsumer.java:52,96
> private final Queue<Exchange> pendingExchanges = new
> ConcurrentLinkedQueue<>();
> ...
> pendingExchanges.add(exchange);
> {code}
> Snapshot events are appended as they arrive and only drained on the next
> poll, so a busy collection or a slow route grows the queue without limit.
> 3. {{queryCollection}} and {{listDocuments}} inject {{_id}}/{{_path}} into
> the document data map (:247-248, :295-296), overwriting document fields with
> those names. The consumer exposes the same values as headers instead - the
> producer should be consistent with it.
> Found during a source audit of the {{components/camel-google}} module family
> against main @ c3b01310be15.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)