Skip to content

Fix NPE when nested field type has no properties in doc-level monitor#2049

Merged
AWSHurneyt merged 1 commit intoopensearch-project:mainfrom
manaswini1920:fix/nested-field-mapping-npe
Mar 21, 2026
Merged

Fix NPE when nested field type has no properties in doc-level monitor#2049
AWSHurneyt merged 1 commit intoopensearch-project:mainfrom
manaswini1920:fix/nested-field-mapping-npe

Conversation

@manaswini1920
Copy link
Contributor

Description

A nested field with type nested but no sub-properties (e.g. "http_request_headers": {"type": "nested"}) causes a NullPointerException during doc-level monitor creation.

In DocLevelMonitorQueries.traverseMappingsAndUpdate(), the code assumes all non-leaf nodes have a properties map. When a field has type: "nested", it's treated as an internal node and the code unconditionally
casts nodeProps["properties"] to MutableMap<String, Any>. If the nested field has no sub-properties, this is null, causing the crash.

Fix: Added a null guard before recursing into nested field properties. Fields with type: "nested" and no properties are now safely skipped during traversal.

Testing: Added unit tests to AlertingUtilsTests covering both cases:

  • Nested field without properties — skipped, no exception
  • Nested field with properties — sub-fields traversed correctly

Related Issues

Resolves opensearch-project/security-analytics#1472

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

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](https://github.com/opensearch-project/alerting/blob/main/CONTRIBUTING.md#developer-certificate-of
-origin).

A nested field with type 'nested' but no sub-properties causes a
NullPointerException during doc-level monitor creation. The
traverseMappingsAndUpdate method assumes all non-leaf nodes have a
'properties' map, but nested fields without sub-properties have none.

Added a null guard before recursing into nested field properties.
Fields with type 'nested' and no properties are now safely skipped.

Resolves opensearch-project/security-analytics#1472

Signed-off-by: Manaswini Ragamouni <manaswini1920@gmail.com>
Signed-off-by: Manaswini Ragamouni <ragamanu@amazon.com>
@AWSHurneyt AWSHurneyt merged commit 9b31fab into opensearch-project:main Mar 21, 2026
19 of 22 checks passed
@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.18 failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/alerting/backport-2.18 2.18
# Navigate to the new working tree
pushd ../.worktrees/alerting/backport-2.18
# Create a new branch
git switch --create backport-2049-to-2.18
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 9b31fabfced6ece17d80b0891b2cec98d9e9e163
# Push it to GitHub
git push --set-upstream origin backport-2049-to-2.18
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/alerting/backport-2.18

Then, create a pull request where the base branch is 2.18 and the compare/head branch is backport-2049-to-2.18.

@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.19 failed:

The process '/usr/bin/git' failed with exit code 1

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/alerting/backport-2.19 2.19
# Navigate to the new working tree
pushd ../.worktrees/alerting/backport-2.19
# Create a new branch
git switch --create backport-2049-to-2.19
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 9b31fabfced6ece17d80b0891b2cec98d9e9e163
# Push it to GitHub
git push --set-upstream origin backport-2049-to-2.19
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/alerting/backport-2.19

Then, create a pull request where the base branch is 2.19 and the compare/head branch is backport-2049-to-2.19.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] nested field type in index template/pattern breaks detector creation

3 participants