[
https://issues.apache.org/jira/browse/CAMEL-26026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18130521#comment-18130521
]
Claus Ibsen commented on CAMEL-26026:
-------------------------------------
The fix is in PR [#28312|https://github.com/apache/camel/pull/28312]: the
{{CamelSolrOperation}} header, or else the {{operation}} option, decides the
operation, and the body only when neither is set; an unknown header value
fails. It has the {{port/camel-4.22.x}} and {{port/camel-4.18.x}} labels for
the backports.
_Claude Code on behalf of davsclaus_
> camel-solr - the type of the body overrides the operation of the
> CamelSolrOperation header and the operation option
> -------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26026
> URL: https://issues.apache.org/jira/browse/CAMEL-26026
> Project: Camel
> Issue Type: Bug
> Components: camel-solr
> Affects Versions: 4.18.0, 4.22.0, 4.23.0
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> The solr producer picks the operation from the type of the body before it
> looks at the {{CamelSolrOperation}} header and the {{operation}} option
> ({{SolrProducer.resolveSolrOperation}}, main 07d2e7a987bc, lines 177-238): a
> Map, a File or a Collection that is not all Strings runs an INSERT, and a
> Collection of Strings runs a DELETE by id. So the operation of a route
> depends on the shape of its data: a route with {{operation=INSERT}} deletes
> documents when the body is a List of Strings, and one with
> {{operation=SEARCH}} inserts a Map body. The {{CamelSolrQueryString}} header
> makes any operation a SEARCH, and a {{CamelSolrOperation}} value that is not
> an operation does not fail.
> Checked on 4.24.0-SNAPSHOT with {{camel run}} against {{camel infra run
> solr}}:
> * {{operation=INSERT}} with the body {{["maps-1"]}} deleted the document
> maps-1;
> * {{operation=SEARCH}} with a Map body inserted the Map as a document;
> * {{operation=PING}} with a List of Strings deleted the documents with those
> ids;
> * {{CamelSolrOperation=NOSUCH}} on an endpoint with {{operation=INSERT}} ran
> a search.
> *Proposed change*: the {{CamelSolrOperation}} header, or else the
> {{operation}} option, decides the operation, and the body only when neither
> is set. A body that is a SolrJ request, such as a SolrQuery or an
> UpdateRequest, still picks its own operation, as the route builds it. A
> header value that is not an operation fails.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)