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

[7.8] Ensure type exists for all monitoring configuration (#57399) #57703

Merged
merged 1 commit into from Jun 5, 2020

Commits on Jun 4, 2020

  1. Ensure type exists for all monitoring configuration (elastic#57399)

    elastic#47711 and elastic#47246 helped to validate that monitoring settings are
    rejected at time of setting the monitoring settings. Else an invalid
    monitoring setting can find it's way into the cluster state and result
    in an exception thrown [1] on the cluster state application (there by
    causing significant issues). Some additional monitoring settings have
    been identified that can result in invalid cluster state that also
    result in exceptions thrown on cluster state application.
    
    All settings require a type of either http or local to be
    applicable. When a setting is changed, the exporters are automatically
    updated with the new settings. However, if the old or new settings lack
    of a type setting an exception will be thrown (since exporters are
    always of type 'http' or 'local'). Arguably we shouldn't blindly create
    and destroy new exporters on each monitoring setting update, but the
    lifecycle of the exporters is abit out the scope this PR is trying to
    address.
    
    This commit introduces a similar methodology to check for validity as
    elastic#47711 and elastic#47246 but this time for ALL (including non-http) settings.
    Monitoring settings are not useful unless there an exporter with a type
    defined. The type is used as dependent setting, such that it must
    exist to set the value. This ensures that when any monitoring settings
    changes that they can only get added to cluster state if the type
    exists. If the type exists (and the other validations pass) then the
    exporters will get re-built and the cluster state remains valid.
    
    Tests have been included to ensure that all dynamic monitoring settings
    have the type as dependent settings.
    
    [1]
    org.elasticsearch.common.settings.SettingsException: missing exporter type for [found-user-defined] exporter
    at org.elasticsearch.xpack.monitoring.exporter.Exporters.initExporters(Exporters.java:126) ~[?:?]
    jakelandis committed Jun 4, 2020
    Copy the full SHA
    b2bbd8e View commit details
    Browse the repository at this point in the history