Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not drop errors when checking for templates #24332

Merged
merged 4 commits into from
Mar 9, 2021

Conversation

urso
Copy link

@urso urso commented Mar 3, 2021

  • Bug

What does this PR do?

Return an error when the HTTP request to check if a template is installed failed due to IO or in case the status code indicates that ES is not stable.

Why is it important?

When connecting to Elasticsearch Beats do check if a template exists and attempt to create the template if that is not the case. If there is an error while checking for the template, the error should be handled. By not handling the error the Beat might attempt to install the template, even if it was already installed. This can lead to issues like Beats overwriting an already existing and modified index with settings that are not supposed to be applied. Plus if Elasticsearch is currently unstable (return code 429 or 5xx), we might trigger a thundering herd problem with hundreds of Beats attempting to overwrite templates in an unstable cluster. By returning early on error, the output will back off exponentially (with random jitter), potentially reducing the chance of breaking the existing template or finally bringing Elasticsearch down to its knees.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
    - [ ] I have made corresponding changes to the documentation
    - [ ] I have made corresponding change to the default configuration files
    - [ ] I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

Related issues

@botelastic botelastic bot added the needs_team Indicates that the issue/PR needs a Team:* label label Mar 3, 2021
@urso urso added review needs_backport PR is waiting to be backported to other branches. labels Mar 3, 2021
@elasticmachine
Copy link
Collaborator

elasticmachine commented Mar 4, 2021

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview

Expand to view the summary

Build stats

  • Build Cause: urso commented: /test metricbeat

  • Start Time: 2021-03-08T11:52:48.275+0000

  • Duration: 62 min 36 sec

  • Commit: 46de4f5

Test stats 🧪

Test Results
Failed 0
Passed 45789
Skipped 4916
Total 50705

Trends 🧪

Image of Build Times

Image of Tests

💚 Flaky test report

Tests succeeded.

Expand to view the summary

Test stats 🧪

Test Results
Failed 0
Passed 45789
Skipped 4916
Total 50705

@andresrc andresrc added the Team:Elastic-Agent Label for the Agent team label Mar 4, 2021
@elasticmachine
Copy link
Collaborator

Pinging @elastic/agent (Team:Agent)

@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Mar 4, 2021
@urso
Copy link
Author

urso commented Mar 8, 2021

/test metricbeat

@urso urso merged commit 21d02a3 into elastic:master Mar 9, 2021
@urso urso deleted the error-handling-template-setup branch March 9, 2021 20:55
@urso urso added v7.13.0 and removed needs_backport PR is waiting to be backported to other branches. labels Mar 9, 2021
urso pushed a commit to urso/beats that referenced this pull request Mar 9, 2021
urso pushed a commit that referenced this pull request Apr 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Elasticsearch template check treats non-200 response as "template not found"
4 participants