Skip to content

Comments

Mark empty _terms_enum results due to DLS as incomplete (#91720)#2

Open
MitchLewis930 wants to merge 1 commit intopr_012_beforefrom
pr_012_after
Open

Mark empty _terms_enum results due to DLS as incomplete (#91720)#2
MitchLewis930 wants to merge 1 commit intopr_012_beforefrom
pr_012_after

Conversation

@MitchLewis930
Copy link

@MitchLewis930 MitchLewis930 commented Jan 30, 2026

PR_012


Note

Medium Risk
Changes the _terms_enum security/response semantics and shard failure reporting, which could affect clients relying on empty results; covered by updated integration tests.

Overview
_terms_enum now reports incomplete results when a shard is skipped due to DLS/FLS restrictions, returning an explicit shard failure reason instead of silently yielding an empty term list.

YAML REST tests are updated to assert complete: false, shard failure counts, and the new error message for DLS-restricted users/API keys, while confirming FLS-only restrictions still return complete: true with zero failures.

Written by Cursor Bugbot for commit 635a4fe. This will update automatically on new commits. Configure here.

)

Today `_terms_enum` returns empty results for indices with document level
security. Elasticsearch should return some hint in case the user hits empty
results due to DLS limitation so the caller (ie. Kibana) can fall back to other
strategies or notify the user with some appropriate error message.

This changes the behaviour of the NodeTransportHandler so that it returns a
NodeTermsEnumResponse with an error indication. The resulting API response will
flag the enum as "incomplete" and list the error in the shard errors section.
Clients can choose to react to this in the appropriate way.

Closes elastic#88321
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

false
)
);
}
Copy link

Choose a reason for hiding this comment

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

Missing return after calling listener causes duplicate responses

High Severity

When canAccess returns false, listener.onResponse() is called but the method continues execution without returning. The loop proceeds to check additional shards and eventually calls listener.onResponse() again (at line 737 if no shards remain, or via dataNodeOperation). This violates the ActionListener contract that it be invoked exactly once, likely causing response-already-sent errors or undefined behavior.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant