You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update CI compatibility test matrix and enhance Docker infrastructure
- Expand compatibility testing from 8 to 30 OpenSearch versions (1.3.20, 2.0.1-2.19.4, 3.0.0-3.4.0, latest)
- Add version-aware Docker plugin removal for OpenSearch 3.x dependency chains
- Implement proper plugin dependency order handling (flow-framework -> skills -> ml -> anomaly-detection -> security)
- Fix flaky connection integration test with proper server readiness polling
- Update Go version specification to 1.24.0 for consistency
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
* Fix OpenSearch 3.1.0+ API compatibility
Add missing fields introduced in OpenSearch 3.1.0:
- Add phase_results_processors field to NodesInfoSearchPipelines struct
for search pipeline phase results processing support
- Add time_in_execution and time_in_execution_millis fields to
ClusterPendingTasksItem struct for improved task timing information
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
* Fix OpenSearch 3.2.0+ API compatibility
Add missing fields across multiple APIs for OpenSearch 3.2.0+ support:
Nodes Stats API:
- Add MaxLastIndexRequestTimestamp to indexing stats
- Add StartreeQueryTotal, StartreeQueryTimeInMillis, StartreeQueryCurrent
for startree query tracking
Indices Stats API:
- Add same startree query fields and MaxLastIndexRequestTimestamp
Cat APIs (nodes, shards, indices):
- Add indexing timestamp fields (last_index_request_timestamp)
- Add startree query tracking fields
Floating Point Precision:
- Fix concurrent_avg_slice_count precision loss by changing from float32
to float64 to match OpenSearch's double precision
Security Plugin:
- Add Settings field to security health API response for plugin
configuration like cache TTL settings
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
* Add OpenSearch 3.3.0+ API compatibility and enhance test infrastructure
OpenSearch 3.3.0+ API Compatibility:
Add missing fields across multiple APIs for enhanced query failure
tracking and system monitoring introduced in OpenSearch 3.3.0+:
Nodes Stats API:
- Add NeuralSearch breaker for neural search circuit breaker support
- Add QueryFailed and StartreeQueryFailed for query failure tracking
- Add SystemGeneratedProcessors and SystemGeneratedFactories to search
pipeline for system component tracking
Indices Stats API:
- Add QueryFailed and StartreeQueryFailed search failure tracking fields
Cat APIs (nodes, shards, indices):
- Add SearchQueryFailed and SearchStartreeQueryFailed fields
- Fix JSON field naming inconsistencies in cat indices API where OpenSearch
uses mixed formats (pri.search.startree.query_* vs pri.search.startree_query_failed)
Cluster State API:
- Add IngestionStatus field to ClusterStateMetaDataIndex for tracking
index ingestion status in cluster metadata
Security Config API:
- Add JwksURI field to JWT authentication configuration struct for
JSON Web Key Set URI support
Field Naming Compatibility Fix:
- OpenSearch 3.2.0 introduced inconsistent startree query field naming
(pri.startree.* instead of pri.search.startree.*) which was corrected
in 3.3.0+. This creates compatibility issues as applications need different
field names depending on server version.
Solution: Implement dual-field approach with raw API compatibility:
- OpenSearch 3.3.0+ fields use corrected naming (pri.search.startree.*)
- OpenSearch 3.2.0 fields use original inconsistent naming (pri.startree.*)
- Both field sets remain as raw redundant fields for OpenAPI compatibility
- Applications choose appropriate field names based on target OpenSearch version
Applications should use:
- PrimarySearchStartreeQuery* fields when targeting OpenSearch 3.3.0+
- PrimaryStartreeQuery* fields when targeting OpenSearch 3.2.0
Test Infrastructure Enhancements:
- Add comprehensive test infrastructure with automatic cluster readiness validation
- Implement NewClient(t) with three-phase validation (health + cluster state + nodes info)
- Add version-aware client configuration supporting both secure/insecure modes
- Create testify-based OpenSearchTestSuite with built-in version detection
- Implement robust readiness polling (25 attempts × 5s intervals) to eliminate CI flakiness
- Update all integration tests to use enhanced test infrastructure
These changes provide enhanced observability for query failures, neural search
circuit breaker monitoring, search pipeline system components, index ingestion
status tracking, JWT authentication configuration, field naming compatibility,
and significantly improved test reliability across all OpenSearch versions.
All compatibility code is marked for removal when 3.2.0 support ends.
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
* Fix OpenSearch 3.4.0+ API compatibility and enhance test infrastructure
This commit resolves compatibility issues discovered during integration testing
with OpenSearch 3.4.0+, ensuring the Go client works seamlessly with the
latest OpenSearch versions.
- **Nodes Stats API**: Add warmer fields to merges section with proper
_count/_millis suffixes; add status_counter field with doc_status subfields
- **Indices Stats API**: Add warmer fields to IndicesStatsMerges struct
with proper _count/_millis suffixes
- **Cat Thread Pool API**: Add parallelism field for thread pool metrics
- **Cat APIs** (indices, shards, nodes): Add comprehensive merges warmer
fields matching flattened JSON structure from OpenSearch responses
- Fix Cat APIs JSON unmarshaling by changing byte fields from *int to *string
to properly handle OpenSearch 3.4.0+ values like "0b"
- Remove incorrect ,string JSON tags from string fields
- Ensures compatibility with OpenSearch's mixed data type responses
- Correctly implement different naming patterns across API families:
- Cat APIs: total_invocations, total_time
- Stats APIs: total_invocations_count, total_time_millis
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
* Enable and run the `modernize` linter
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
---------
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,16 +5,26 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
5
5
## [Unreleased]
6
6
7
7
### Added
8
+
- Enhanced cluster readiness checking for improved test reliability: `ostest.NewClient()` now includes readiness validation (health + cluster state + nodes info)
8
9
9
10
### Changed
10
11
- Refactor Client struct to use embedded mutex pattern for improved thread safety ([#775](https://github.com/opensearch-project/opensearch-go/pull/775))
11
12
- Refactor metrics struct to use atomic counters for lock-free request/failure tracking ([#776](https://github.com/opensearch-project/opensearch-go/pull/776))
13
+
- Test against Opensearch 2.19.4, 3.1, 3.3, and 3.4 ([#782](https://github.com/opensearch-project/opensearch-go/pull/782))
12
14
13
15
### Deprecated
14
16
15
17
### Removed
16
18
17
19
### Fixed
20
+
- Fix flaky connection integration test by replacing arbitrary sleep times with proper server readiness polling
21
+
- Fix OpenSearch 3.1.0+ API compatibility by adding phase_results_processors field to nodes API and time_in_execution fields to cluster pending tasks API
22
+
- Fix OpenSearch 3.2.0+ API compatibility by adding max_last_index_request_timestamp and startree query fields across nodes stats, indices stats, and cat APIs, plus settings field to security plugin health API
23
+
- Fix OpenSearch 3.3.0+ API compatibility by adding neural_search breaker, query_failed and startree_query_failed search fields, search pipeline system_generated fields across multiple APIs, plus ingestion_status field to cluster state API and jwks_uri field to security config API
24
+
- Fix OpenSearch 3.4.0+ API compatibility by adding warmer fields to merges section, parallelism field to thread pool, and status_counter field across multiple APIs
25
+
- Fix cat indices API field naming compatibility across OpenSearch versions by using forward-compatible field names (PrimarySearchStartreeQuery*) that match the corrected 3.3.0+ naming, with fallback support for the temporary 3.2.0 field names
26
+
- Fix cat APIs data type compatibility by changing byte fields from int to string to properly handle values like "0b"
27
+
- Fix floating point precision loss in nodes stats concurrent_avg_slice_count field by changing from float32 to float64
0 commit comments