Commit 33e7fa0
committed
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 automatic consolidation:
- Stable fields use corrected 3.3.0+ naming as primary
- V32 compatibility fields handle temporary 3.2.0 naming
- consolidateV320StatsFields() method provides transparent fallback logic
- Called automatically in catClient.Indices() after JSON unmarshaling
Applications can use PrimarySearchStartreeQueryCurrent,
PrimarySearchStartreeQueryTime, and PrimarySearchStartreeQueryTotal
consistently regardless of OpenSearch server version.
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
- Add comprehensive test coverage for cat indices field consolidation compatibility
- 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>1 parent cc91806 commit 33e7fa0
58 files changed
Lines changed: 927 additions & 159 deletions
File tree
- .github/workflows
- internal/test
- opensearchapi
- opensearchtransport
- opensearchutil
- plugins
- ism
- security
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
| |||
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
25 | 27 | | |
26 | | - | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
11 | | - | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | 15 | | |
17 | 16 | | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
33 | | - | |
34 | | - | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
35 | 39 | | |
36 | | - | |
37 | | - | |
38 | 40 | | |
39 | | - | |
40 | | - | |
41 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
42 | 48 | | |
43 | 49 | | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
51 | 58 | | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
62 | 63 | | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | 64 | | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
| 65 | + | |
| 66 | + | |
75 | 67 | | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
80 | 79 | | |
81 | | - | |
82 | | - | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
83 | 87 | | |
84 | | - | |
85 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
86 | 95 | | |
87 | | - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
88 | 116 | | |
89 | 117 | | |
90 | 118 | | |
91 | | - | |
92 | | - | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
93 | 124 | | |
94 | 125 | | |
95 | 126 | | |
| |||
99 | 130 | | |
100 | 131 | | |
101 | 132 | | |
102 | | - | |
| 133 | + | |
103 | 134 | | |
104 | 135 | | |
105 | | - | |
| 136 | + | |
106 | 137 | | |
107 | 138 | | |
108 | 139 | | |
109 | | - | |
| 140 | + | |
110 | 141 | | |
111 | 142 | | |
112 | 143 | | |
113 | | - | |
| 144 | + | |
114 | 145 | | |
115 | 146 | | |
116 | 147 | | |
117 | | - | |
| 148 | + | |
118 | 149 | | |
119 | 150 | | |
120 | 151 | | |
| |||
0 commit comments