Skip to content

Adding Cluster Endpoints for search failures and refactoring document status counters#19115

Merged
cwperks merged 64 commits intoopensearch-project:mainfrom
ajleong623:upgrade-cluster-endpoints
Dec 2, 2025
Merged

Adding Cluster Endpoints for search failures and refactoring document status counters#19115
cwperks merged 64 commits intoopensearch-project:mainfrom
ajleong623:upgrade-cluster-endpoints

Conversation

@ajleong623
Copy link
Copy Markdown
Contributor

@ajleong623 ajleong623 commented Aug 20, 2025

Description

This change is a rebased and cleaned version of another pr #18601

Related Issues

Resolves #18377, resolves #18438

Check List

  • Functionality includes testing.
  • API changes companion pull request created, if applicable.
  • Public documentation issue/PR created, if applicable.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Summary by CodeRabbit

  • New Features

    • Per-node status_counter reporting doc and search-response status metrics categorized as success, user_error, and system_failure.
    • Search API tracker added to capture per-response status.
  • Bug Fixes

    • Improved per-response status tracking and reporting across multi-search, bulk, and search flows.
  • Tests

    • New and updated tests validating status_counter serialization, output formatting, and per-node aggregation.
  • Chores

    • Deprecated legacy doc-status exposure in favor of unified status_counter.
  • Documentation

    • Changelog entry added for the search API tracker.

✏️ Tip: You can customize this high-level summary in your review settings.

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@ajleong623 ajleong623 requested a review from a team as a code owner August 20, 2025 17:15
@github-actions github-actions bot added enhancement Enhancement or improvement to existing feature or request Search Search query, autocomplete ...etc Search:Query Insights labels Aug 20, 2025
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for ab74705: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for ad9e107: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 9e3af03: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 7e9374a: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for a345b21: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for ae2c661: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for c9ad00b: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 32a2fae: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
server/src/main/java/org/opensearch/action/admin/indices/stats/StatusCounterStats.java (1)

64-102: Guard nullable inner stats in snapshot/serialization to avoid NPEs

Because docStatusStats and searchResponseStatusStats are annotated @Nullable and can legitimately be null (e.g., when deserialized from nodes < 3.4.0 or via the 2‑arg ctor), the current implementations will throw:

  • writeTo(...) calls docStatusStats.getSnapshot() / searchResponseStatusStats.getSnapshot() unconditionally.
  • toXContent(...) does the same.
  • getSnapshot() assumes both source fields are non‑null, relying on their add(...) to tolerate null arguments; it’s safer and clearer to guard here as well.

This can surface as NPEs when serializing node stats for mixed‑version clusters or when callers intentionally pass null into the constructor, which is both user‑visible and hard to diagnose.

Consider treating null as “no data” for that component and guarding accordingly:

@@
     /**
      * Gets a snapshot of the current state of the REST status counters.
      */
     public StatusCounterStats getSnapshot() {
-        StatusCounterStats stats = new StatusCounterStats();
-        stats.getDocStatusStats().add(docStatusStats);
-        stats.getSearchResponseStatusStats().add(searchResponseStatusStats);
-        return stats;
+        StatusCounterStats stats = new StatusCounterStats();
+        if (docStatusStats != null) {
+            stats.getDocStatusStats().add(docStatusStats);
+        }
+        if (searchResponseStatusStats != null) {
+            stats.getSearchResponseStatusStats().add(searchResponseStatusStats);
+        }
+        return stats;
     }
@@
     @Override
     public void writeTo(StreamOutput out) throws IOException {
         if (out.getVersion().onOrAfter(Version.V_3_4_0)) {
-            out.writeOptionalWriteable(docStatusStats.getSnapshot());
-            out.writeOptionalWriteable(searchResponseStatusStats.getSnapshot());
+            out.writeOptionalWriteable(docStatusStats == null ? null : docStatusStats.getSnapshot());
+            out.writeOptionalWriteable(
+                searchResponseStatusStats == null ? null : searchResponseStatusStats.getSnapshot()
+            );
         }
     }
@@
     @Override
     public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
         builder.startObject(Fields.STATUS_COUNTER);
-        docStatusStats.getSnapshot().toXContent(builder, params);
-        searchResponseStatusStats.getSnapshot().toXContent(builder, params);
+        if (docStatusStats != null) {
+            docStatusStats.getSnapshot().toXContent(builder, params);
+        }
+        if (searchResponseStatusStats != null) {
+            searchResponseStatusStats.getSnapshot().toXContent(builder, params);
+        }
         builder.endObject();
 
         return builder;
     }

This keeps the wire/XContent format stable while honoring the @Nullable contract and avoiding NPEs in mixed‑version or partially‑initialized scenarios.

🧹 Nitpick comments (2)
libs/core/src/main/java/org/opensearch/core/rest/RestStatus.java (2)

539-550: Consider returning StatusType instead of String for type safety.

The method currently returns String by calling StatusType.toString(), which reduces type safety. Returning the StatusType enum directly would provide:

  • Compile-time type checking
  • Better IDE support and autocompletion
  • Ability to use switch statements
  • Protection against typos in string comparisons

Callers can still convert to String when needed by calling .toString() themselves.

Apply this diff to return the enum type:

-    public String getStatusType() {
+    public StatusType getStatusType() {
         int family = getStatusFamilyCode();
         if (family <= 3) {
-            return StatusType.SUCCESS.toString();
+            return StatusType.SUCCESS;
         } else if (family == 4) {
             // 4xx errors correspond with errors on the client side
-            return StatusType.USER_ERROR.toString();
+            return StatusType.USER_ERROR;
         } else {
             // 5xx errors correspond with errors on the systems side
-            return StatusType.SYSTEM_FAILURE.toString();
+            return StatusType.SYSTEM_FAILURE;
         }
     }

541-548: Replace magic numbers with named constants.

As previously suggested by kaushalmahi12, the numeric values 3 and 4 should be replaced with well-defined constants for better readability and maintainability.

Consider defining constants at the class level:

private static final int SUCCESS_FAMILY_MAX = 3;
private static final int CLIENT_ERROR_FAMILY = 4;

Then apply this diff:

     public StatusType getStatusType() {
         int family = getStatusFamilyCode();
-        if (family <= 3) {
+        if (family <= SUCCESS_FAMILY_MAX) {
             return StatusType.SUCCESS;
-        } else if (family == 4) {
+        } else if (family == CLIENT_ERROR_FAMILY) {
             // 4xx errors correspond with errors on the client side
             return StatusType.USER_ERROR;
         } else {
             // 5xx errors correspond with errors on the systems side
             return StatusType.SYSTEM_FAILURE;
         }
     }

Based on learnings, a previous reviewer has flagged this concern.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b8e3881 and 3d84ac1.

📒 Files selected for processing (5)
  • libs/core/src/main/java/org/opensearch/core/rest/RestStatus.java (1 hunks)
  • server/src/main/java/org/opensearch/action/admin/indices/stats/DocStatusStats.java (1 hunks)
  • server/src/main/java/org/opensearch/action/admin/indices/stats/SearchResponseStatusStats.java (1 hunks)
  • server/src/main/java/org/opensearch/action/admin/indices/stats/StatusCounterStats.java (1 hunks)
  • server/src/main/java/org/opensearch/action/search/TransportSearchAction.java (7 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • server/src/main/java/org/opensearch/action/admin/indices/stats/DocStatusStats.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: gradle-check
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: detect-breaking-change
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: Analyze (java)
🔇 Additional comments (2)
server/src/main/java/org/opensearch/action/admin/indices/stats/SearchResponseStatusStats.java (1)

25-94: SearchResponseStatusStats implementation looks sound and consistent with AbstractStatusStats

Constructors, aggregation (add/inc), snapshotting, and toXContent/writeTo all align with the intended LongAdder-based counter pattern and appear thread‑safe and correct for coordinator‑side search status tracking.

server/src/main/java/org/opensearch/action/search/TransportSearchAction.java (1)

173-234: Search status tracking wrapper correctly composes with cancellation and tracing

The new indicesService dependency and the searchStatusStatsUpdateListener in doExecute are wired in a reasonable spot:

  • The original listener is first wrapped with TimeoutTaskCancellationUtility (when task is cancellable), so timeout/cancellation semantics are preserved.
  • The stats wrapper sits on top and records both successful responses (searchResponse.status()) and failures (ExceptionsHelper.status(e)) before delegating, ensuring all terminal outcomes get counted at the coordinator.
  • The wrapper is passed as originalListener into executeRequest, so downstream tracing/rewriting logic remains unchanged apart from the additional counter increments.

Assuming indicesService.getSearchResponseStatusStats().inc(...) never throws, this should give you robust per‑node search status metrics without impacting search behavior.

Also applies to: 320-353

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Copy link
Copy Markdown
Member

@cwperks cwperks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only minor typos remaining. Approving this PR. Any minor comments can be either pushed in another commit or a separate PR.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
server/src/main/java/org/opensearch/indices/NodeIndicesStats.java (2)

109-125: Deprecation is good; consider pointing callers to the new overloads

Marking the legacy constructors as @Deprecated(since = "3.4.0") is appropriate. To make migration clearer for users of this public API, consider adding a brief note in the Javadoc for each deprecated ctor indicating that callers should switch to the corresponding overload that accepts StatusCounterStats.

Also applies to: 163-194


127-155: Constructor overloads duplicate aggregation logic; consider a shared helper

Both new constructors that accept StatusCounterStats re‑implement the same aggregation pattern used in the existing ctors (iterating shard stats, adding into stats, then wiring SearchRequestStats). The implementations themselves look correct and consistent, but this duplication across four ctors makes future changes to the aggregation path easier to get wrong.

Consider extracting a private helper (e.g., initStats(CommonStats oldStats, Map<Index, List<IndexShardStats>> statsByShard, SearchRequestStats searchRequestStats)) and another small helper for assigning statusCounterStats, and calling those from each ctor to centralize the logic.

Also applies to: 196-235

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3d84ac1 and 228288a.

📒 Files selected for processing (1)
  • server/src/main/java/org/opensearch/indices/NodeIndicesStats.java (8 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: gradle-check
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: Analyze (java)
  • GitHub Check: detect-breaking-change
🔇 Additional comments (4)
server/src/main/java/org/opensearch/indices/NodeIndicesStats.java (4)

39-39: StatusCounterStats wiring into class state looks consistent

The new import and protected statusCounterStats field integrate the status counters cleanly into NodeIndicesStats, and leaving the field nullable matches how it’s used later (serialization/XContent guarded by null checks). No issues here.

Also applies to: 84-84


97-102: Version‑gated optional serialization is symmetric and null‑safe

The new read/write logic for StatusCounterStats:

  • Gates on Version.V_3_4_0 on both StreamInput and StreamOutput.
  • Uses an explicit boolean flag to represent presence before constructing/deserializing the object.
  • Avoids emitting extra bytes for pre‑3.4 peers and avoids NPE when statusCounterStats is absent.

This matches the pattern used elsewhere for optional fields and addresses prior feedback about encoding presence explicitly.

Also applies to: 384-389


363-366: Getter for StatusCounterStats matches existing patterns

The new @Nullable getStatusCounterStats() accessor is straightforward and consistent with the other stats getters on this class (nullable, simple field return). No changes needed.


438-440: XContent emission of StatusCounterStats is correctly guarded

Emitting statusCounterStats.toXContent(...) only when the field is non‑null ensures backward compatibility for nodes or code paths that don’t yet populate these counters, while still placing the new data alongside the existing node‑level indices stats as intended. This integration looks correct.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 1, 2025

❌ Gradle check result for 228288a: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

@ajleong623
Copy link
Copy Markdown
Contributor Author

ajleong623 commented Dec 1, 2025

@cwperks, I can push the typo fixes in the pr in another commit.

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 1, 2025

❌ Gradle check result for a606dbb: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 1, 2025

❌ Gradle check result for 1969b35: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

@ajleong623
Copy link
Copy Markdown
Contributor Author

Hold on. Some of the tests are not passing now, for some reason. I can look into why that is first before merging.

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
rest-api-spec/src/main/resources/rest-api-spec/test/nodes.stats/11_indices_metrics.yml (1)

188-217: Consider consolidating the duplicated test block for search_response_status.

The new "Metric - indexing search_response_status" block (lines 188–217) mirrors the structure and setup of the preceding "Metric - indexing doc_status" block, differing only in the specific status_counter field assertion at the end. Both blocks query the same metric (metric: indices, index_metric: indexing) and verify nearly identical false/true conditions for other metrics.

If both doc_status and search_response_status are expected to coexist in the same response, consider whether a single test block with multiple assertions for both fields would reduce duplication and improve maintainability:

  - is_true:  nodes.$node_id.indices.status_counter
  - is_true:  nodes.$node_id.indices.status_counter.doc_status
  - is_true:  nodes.$node_id.indices.status_counter.search_response_status

Alternatively, if the intent is to test them independently, document the rationale or consider using YAML anchors to reduce copy-paste.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a606dbb and c58c9b6.

📒 Files selected for processing (1)
  • rest-api-spec/src/main/resources/rest-api-spec/test/nodes.stats/11_indices_metrics.yml (7 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
  • GitHub Check: gradle-check
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: detect-breaking-change
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: Analyze (java)
🔇 Additional comments (1)
rest-api-spec/src/main/resources/rest-api-spec/test/nodes.stats/11_indices_metrics.yml (1)

3-6: Verify YAML version string format.

The skip version fields use a leading space in the string value (e.g., " - 3.3.99"). Confirm that this format is intentional and correctly parsed by the test framework. If the space is unintended, the format should be "- 3.3.99" without the leading space.

Also applies to: 34-37, 65-68, 96-99, 127-130, 158-160

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 2, 2025

✅ Gradle check result for 2a99ef3: SUCCESS

@ajleong623
Copy link
Copy Markdown
Contributor Author

It works now! This should be ready.

@cwperks cwperks merged commit f76826c into opensearch-project:main Dec 2, 2025
35 checks passed
rgsriram pushed a commit to rgsriram/OpenSearch that referenced this pull request Dec 5, 2025
… status counters (opensearch-project#19115)

* add first changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test for breaking detection

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test for breaking detection

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* add changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix compile issues

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* added integration tests

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix null pointer and breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test runner not found

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test compilation

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* it should pass

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* skip old versions without status counter

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* updated license

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* keystore test timed out

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* keystore test timed out

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor enum and stat holders

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* applied suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update conflicts

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* revert merge scheduler config

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove duplicate method

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* compile

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update versions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* comment out doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* add back old doc values

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove docstatus again

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* did not run

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update version rules

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* should be ready

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* coderabbit suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* applied suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* write booleans

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix typos

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update skip versions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove duplicate yml test

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

---------

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
liuguoqingfz pushed a commit to liuguoqingfz/OpenSearch that referenced this pull request Dec 15, 2025
… status counters (opensearch-project#19115)

* add first changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test for breaking detection

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test for breaking detection

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* add changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix compile issues

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* added integration tests

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix null pointer and breaking changes

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test runner not found

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* test compilation

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* it should pass

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* skip old versions without status counter

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* updated license

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* keystore test timed out

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* keystore test timed out

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* refactor enum and stat holders

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* applied suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update conflicts

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* revert merge scheduler config

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove duplicate method

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* compile

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update versions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* comment out doc status

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* add back old doc values

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove docstatus again

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* retry for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* did not run

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update version rules

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun for flaky

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* should be ready

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* spotless

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* coderabbit suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* applied suggestions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* write booleans

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* fix typos

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* rerun

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* update skip versions

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

* remove duplicate yml test

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>

---------

Signed-off-by: Anthony Leong <aj.leong623@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement Enhancement or improvement to existing feature or request Indexing Indexing, Bulk Indexing and anything related to indexing Search:Query Insights Search Search query, autocomplete ...etc v3.4.0 Issues and PRs related to version 3.4.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Refactor DocStatusStats [Feature Request] Track non-successful Search API calls across coordinator nodes

5 participants