Skip to content

Commit e526d53

Browse files
dependabot[bot]dependabot[bot]
authored andcommitted
Update changelog
Signed-off-by: dependabot[bot] <support@github.com>
1 parent 4b4f553 commit e526d53

7 files changed

Lines changed: 227 additions & 226 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
161161
### Security
162162

163163
### Dependencies
164-
164+
- Bump `github.com/aws/aws-sdk-go-v2/config` from 1.32.6 to 1.32.7 ([#767](https://github.com/opensearch-project/opensearch-go/pull/767))
165+
- Bump `golang.org/x/sync` from 0.19.0 to 0.20.0 ([#806](https://github.com/opensearch-project/opensearch-go/pull/806))
165166
- Bump `github.com/aws/aws-sdk-go-v2/config` from 1.32.6 to 1.32.7 ([#767](https://github.com/opensearch-project/opensearch-go/pull/767))
166167

167168
## [4.6.0]

guides/cluster_health_checking.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ The capacity model values (`clientsPerServer`, `healthCheckRate`) are auto-deriv
8080

8181
### Configuration
8282

83-
| Config Field | Default | Description |
84-
| ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
85-
| `MaxRetryClusterHealth` | `4h` | Retry interval for re-probing unavailable nodes. `0` = use default, `<0` = disable probing entirely. |
86-
| `HealthCheckRequestModifier` | `nil` | Callback applied to every health check request (both `GET /` and `/_cluster/health`). Use this to inject custom auth headers. |
83+
| Config Field | Default | Description |
84+
| --- | --- | --- |
85+
| `MaxRetryClusterHealth` | `4h` | Retry interval for re-probing unavailable nodes. `0` = use default, `<0` = disable probing entirely. |
86+
| `HealthCheckRequestModifier` | `nil` | Callback applied to every health check request (both `GET /` and `/_cluster/health`). Use this to inject custom auth headers. |
8787

8888
```go
8989
client, err := opensearchapi.NewClient(opensearchapi.Config{
@@ -130,11 +130,11 @@ The response is a JSON object:
130130

131131
The `status` field reports overall cluster health:
132132

133-
| Status | Meaning |
134-
| -------- | -------------------------------------------------------------------------------------------------------------- |
135-
| `green` | All primary and replica shards are assigned. |
133+
| Status | Meaning |
134+
| --- | --- |
135+
| `green` | All primary and replica shards are assigned. |
136136
| `yellow` | All primary shards are assigned, but some replicas are not. The cluster is functional but not fully redundant. |
137-
| `red` | Some primary shards are unassigned. Data loss or unavailability may be occurring. |
137+
| `red` | Some primary shards are unassigned. Data loss or unavailability may be occurring. |
138138

139139
A single-node development cluster will always report `yellow` because there is no second node to host replica shards. This is expected and does not indicate a problem.
140140

@@ -150,16 +150,16 @@ The client uses poll-and-parse instead: issue the request, read the `status` fie
150150

151151
## HTTP Response Status Codes
152152

153-
| HTTP Status | Meaning |
154-
| ----------- | ----------------------------------------------------------------------------------- |
155-
| **200** | Success. Parse the `status` and `timed_out` fields from the response body. |
156-
| **400** | Malformed request (invalid query parameters). |
157-
| **401** | Authentication failure: credentials are missing or invalid. |
158-
| **403** | Authorization failure: the user is authenticated but lacks the required permission. |
159-
| **408** | The request timed out. Only occurs when `wait_for_*` parameters are used. |
160-
| **429** | The node's thread pool rejected the request (server-side backpressure). |
161-
| **500** | Unexpected server error. |
162-
| **503** | The node is not ready to accept requests (e.g., still starting up). |
153+
| HTTP Status | Meaning |
154+
| --- | --- |
155+
| **200** | Success. Parse the `status` and `timed_out` fields from the response body. |
156+
| **400** | Malformed request (invalid query parameters). |
157+
| **401** | Authentication failure: credentials are missing or invalid. |
158+
| **403** | Authorization failure: the user is authenticated but lacks the required permission. |
159+
| **408** | The request timed out. Only occurs when `wait_for_*` parameters are used. |
160+
| **429** | The node's thread pool rejected the request (server-side backpressure). |
161+
| **500** | Unexpected server error. |
162+
| **503** | The node is not ready to accept requests (e.g., still starting up). |
163163

164164
### Distinguishing Auth Errors from Cluster Failures
165165

@@ -265,21 +265,21 @@ PUT /_plugins/_security/api/rolesmapping/health_check
265265

266266
Before creating a custom role, check whether an existing role already provides sufficient access:
267267

268-
| Role | Permissions | Notes |
269-
| ------------------------------ | --------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
270-
| `cluster_monitor` | `cluster:monitor/*` | Covers health, stats, and all monitoring endpoints. Broader than necessary for health checks alone. |
271-
| `opensearch_dashboards_server` | Includes cluster monitoring among other privileges. | Intended for the Dashboards service account. |
268+
| Role | Permissions | Notes |
269+
| --- | --- | --- |
270+
| `cluster_monitor` | `cluster:monitor/*` | Covers health, stats, and all monitoring endpoints. Broader than necessary for health checks alone. |
271+
| `opensearch_dashboards_server` | Includes cluster monitoring among other privileges. | Intended for the Dashboards service account. |
272272

273273
The minimal custom `health_check` role with only `cluster:monitor/health` follows the principle of least privilege.
274274

275275
## Transitioning from an Unsecured Cluster
276276

277277
When a cluster transitions from no security (Security plugin disabled) to security enabled, the behavior changes:
278278

279-
| Before security | After security |
280-
| ----------------------------------------- | ---------------------------------------------------------------------------------------------- |
281-
| All requests succeed with no credentials. | Requests without valid credentials return **401**. |
282-
| No permission checks. | Requests with valid credentials but missing `cluster:monitor/health` privilege return **403**. |
279+
| Before security | After security |
280+
| --- | --- |
281+
| All requests succeed with no credentials. | Requests without valid credentials return **401**. |
282+
| No permission checks. | Requests with valid credentials but missing `cluster:monitor/health` privilege return **403**. |
283283

284284
If the client is performing health checks and the cluster enables security, health probes will begin returning 401. This is expected. The client should surface this condition clearly rather than reporting the cluster as unhealthy: the cluster is reachable, but credentials need to be configured.
285285

guides/error_handling.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ This design maximizes availability but requires careful error checking in client
2222

2323
### Operations That Can Have Partial Failures
2424

25-
| Operation | HTTP Status | Partial Failure Indicator | Impact |
26-
| ----------------------- | ----------- | ------------------------- | ----------------------------------------- |
27-
| **Bulk** | 200 | `errors: true` | Data loss - some documents not indexed |
28-
| **Search** | 200 | `_shards.failed > 0` | Incomplete results - missing data |
29-
| **Index/Update/Delete** | 201/200 | `_shards.failed > 0` | Durability risk - no replica confirmation |
30-
| **Refresh** | 200 | `_shards.failed > 0` | Incomplete refresh |
31-
| **Cluster operations** | 200 | `_shards.failed > 0` | Incomplete stats/operations |
25+
| Operation | HTTP Status | Partial Failure Indicator | Impact |
26+
| --- | --- | --- | --- |
27+
| **Bulk** | 200 | `errors: true` | Data loss - some documents not indexed |
28+
| **Search** | 200 | `_shards.failed > 0` | Incomplete results - missing data |
29+
| **Index/Update/Delete** | 201/200 | `_shards.failed > 0` | Durability risk - no replica confirmation |
30+
| **Refresh** | 200 | `_shards.failed > 0` | Incomplete refresh |
31+
| **Cluster operations** | 200 | `_shards.failed > 0` | Incomplete stats/operations |
3232

3333
## Checking for Partial Failures
3434

@@ -341,23 +341,23 @@ func (m *OperationMetrics) Report() {
341341

342342
### Bulk Operation Errors
343343

344-
| Error Type | Description | Retryable? | Action |
345-
| ----------------------------------- | ---------------------------------- | ---------- | ----------------------------------------------------------------------- |
346-
| `mapper_parsing_exception` | Invalid document format | No | Fix document |
347-
| `version_conflict_engine_exception` | Version conflict | Maybe | Retry with updated version |
348-
| `document_missing_exception` | Document not found (update/delete) | No | Skip or create |
349-
| `es_rejected_execution_exception` | Queue full | Yes | Retry with backoff |
350-
| `circuit_breaking_exception` | Circuit breaker tripped | Yes | Retry with backoff |
351-
| `timeout_exception` | Operation timeout | Yes | Retry; see [Bulk: Timeout Configuration](bulk.md#timeout-configuration) |
344+
| Error Type | Description | Retryable? | Action |
345+
| --- | --- | --- | --- |
346+
| `mapper_parsing_exception` | Invalid document format | No | Fix document |
347+
| `version_conflict_engine_exception` | Version conflict | Maybe | Retry with updated version |
348+
| `document_missing_exception` | Document not found (update/delete) | No | Skip or create |
349+
| `es_rejected_execution_exception` | Queue full | Yes | Retry with backoff |
350+
| `circuit_breaking_exception` | Circuit breaker tripped | Yes | Retry with backoff |
351+
| `timeout_exception` | Operation timeout | Yes | Retry; see [Bulk: Timeout Configuration](bulk.md#timeout-configuration) |
352352

353353
### Shard Failure Reasons
354354

355-
| Reason Type | Description | Action |
356-
| ---------------------------------- | --------------------- | -------------------- |
357-
| `shard_not_available_exception` | Shard not ready | Retry or wait |
355+
| Reason Type | Description | Action |
356+
| --- | --- | --- |
357+
| `shard_not_available_exception` | Shard not ready | Retry or wait |
358358
| `primary_missing_action_exception` | Primary shard missing | Check cluster health |
359-
| `search_phase_execution_exception` | Search phase failed | Review query |
360-
| `illegal_argument_exception` | Invalid parameters | Fix query |
359+
| `search_phase_execution_exception` | Search phase failed | Review query |
360+
| `illegal_argument_exception` | Invalid parameters | Fix query |
361361

362362
## Complete Example: Production-Ready Bulk Indexer
363363

guides/node_discovery_and_roles.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ OpenSearch 3.0 introduced two significant role changes:
6969

7070
These are distinct roles serving different purposes:
7171

72-
| Role | Purpose | Data Source | Write Traffic |
73-
| -------- | ------------------------- | -------------------------------- | ------------------------- |
74-
| `search` | Dedicated search replicas | Replicated from primary shards | None (read-only replicas) |
75-
| `warm` | Searchable snapshots | Snapshot storage (local/remote) | None (read-only) |
76-
| `data` | General purpose | Local shards (primary + replica) | Yes (indexing + search) |
72+
| Role | Purpose | Data Source | Write Traffic |
73+
| --- | --- | --- | --- |
74+
| `search` | Dedicated search replicas | Replicated from primary shards | None (read-only replicas) |
75+
| `warm` | Searchable snapshots | Snapshot storage (local/remote) | None (read-only) |
76+
| `data` | General purpose | Local shards (primary + replica) | Yes (indexing + search) |
7777

7878
## Cluster Manager Filtering
7979

guides/response_buffering.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ In both cases, always call `res.Body.Close()` when done.
5454

5555
## When to Use
5656

57-
| Scenario | Recommendation |
58-
| -------------------------------------------------- | --------------------------------- |
59-
| Standard API calls (CRUD, search, cluster ops) | Leave buffering enabled (default) |
60-
| Reverse proxy forwarding large responses | Disable buffering |
61-
| Streaming bulk responses to clients | Disable buffering |
62-
| Scroll/PIT with large result sets piped downstream | Disable buffering |
57+
| Scenario | Recommendation |
58+
| --- | --- |
59+
| Standard API calls (CRUD, search, cluster ops) | Leave buffering enabled (default) |
60+
| Reverse proxy forwarding large responses | Disable buffering |
61+
| Streaming bulk responses to clients | Disable buffering |
62+
| Scroll/PIT with large result sets piped downstream | Disable buffering |
6363

6464
## Configuration Reference
6565

66-
| Field | Type | Default | Location |
67-
| -------------------------- | ------ | ------- | ------------------------------------------------- |
66+
| Field | Type | Default | Location |
67+
| --- | --- | --- | --- |
6868
| `DisableResponseBuffering` | `bool` | `false` | `opensearch.Config`, `opensearchtransport.Config` |

guides/retry_backoff.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ To limit total wait time when the server is unresponsive, use a context with a d
6666

6767
`RequestTimeout` and context deadlines serve different purposes:
6868

69-
| Mechanism | Scope | Applies to |
70-
| --------------------- | ----------- | ----------------------------------------------------------- |
71-
| `RequestTimeout` | Per-attempt | Each individual HTTP round-trip (including each retry) |
72-
| `context.WithTimeout` | Total | The entire operation across all attempts and backoff delays |
69+
| Mechanism | Scope | Applies to |
70+
| --- | --- | --- |
71+
| `RequestTimeout` | Per-attempt | Each individual HTTP round-trip (including each retry) |
72+
| `context.WithTimeout` | Total | The entire operation across all attempts and backoff delays |
7373

7474
Use both together for defense in depth: `RequestTimeout` prevents any single attempt from hanging indefinitely, while a context deadline caps the total wall-clock time.
7575

0 commit comments

Comments
 (0)