[
https://issues.apache.org/jira/browse/CAMEL-24816?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-24816 started by Andrea Cosentino.
------------------------------------------------
> camel-elasticsearch/camel-opensearch: minor robustness fixes (scroll clear
> NPE, id header clobber, size/from header bleed)
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24816
> URL: https://issues.apache.org/jira/browse/CAMEL-24816
> Project: Camel
> Issue Type: Bug
> Components: camel-elasticsearch, camel-opensearch
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
>
> Three small, related robustness issues shared by camel-elasticsearch and
> camel-opensearch:
> *1. Scroll clear can NPE on a null scroll id.*
> {{(Elasticsearch|Opensearch)ScrollRequestIterator.close()}} builds {{new
> ClearScrollRequest.Builder().scrollId(List.of(scrollId))}}. If the search
> response carried no scroll id (empty/absent), {{scrollId}} is null and
> {{List.of(null)}} throws NullPointerException from {{close()}}, masking the
> real outcome. Guard: only issue the clear-scroll when a scroll id is present.
> *2. A null index-id header clobbers a caller-supplied id.* In
> {{(Elasticsearch|Opensearch)ActionRequestConverter}}, when the body is
> already a pre-built {{IndexRequest.Builder}}/{{UpdateRequest.Builder}}, the
> converter calls {{.id(getHeader(PARAM_INDEX_ID))}} unconditionally. If the
> caller built the request with an id but did not set the {{CamelIndexId}}
> header, the id is overwritten with null. Guard: only set the id when the
> header is present. (Also: camel-elasticsearch used reference-equality
> {{enableDocumentOnlyMode == Boolean.TRUE}}; switch to
> {{Boolean.TRUE.equals(...)}}.)
> *3. size/from headers bleed downstream.* The producer defaults
> {{CamelElasticsearchSize}}/{{...From}} (and OpenSearch equivalents) from the
> endpoint configuration when absent, but {{cleanup()}} removes only the
> index-name and wait-for-active-shards headers. The defaulted size/from
> headers therefore persist on the exchange and leak into a subsequent
> endpoint. Remove them in {{cleanup()}} exactly as the other defaulted headers
> are removed.
> Adds a converter unit test (both components) for the id-header guard.
> Backport candidate for camel-4.22.x and camel-4.18.x.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)