Address invalid monitoring configuration that prevents Elasticsearch from starting#47249
Closed
jakelandis wants to merge 1 commit intoelastic:masterfrom
Closed
Address invalid monitoring configuration that prevents Elasticsearch from starting#47249jakelandis wants to merge 1 commit intoelastic:masterfrom
jakelandis wants to merge 1 commit intoelastic:masterfrom
Conversation
* It generically solves the cluster state application across all of
the settings by catching the exception and logging it.
This implementation is not ideal becuase
* It allow invalid configuration to be persisted to cluster state,
with only a message to the log
* Does not notify the user that the configuration maybe incorrect
via the REST API.
To notify the the user that the configuration is incorrect via the
REST API and prevent persisting config to cluster state, one would
need to implement a validator via
` clusterService.getClusterSettings().addAffixUpdateConsumer(HOST_SETTING , consumer, validator)`
However, this is not done becuase
* It requires calling initExporters to find any exceptions that may be found.
* Calling initExporters is not feasible due to
* It would require alot of work on cluster update (even if we
refactored out the validation bits)
* We don't have easy access to the set of settings that are currently
being set, just easy access to the single setting. This is an affix
setting with other highly correlated settings needed to determine
correctness. The validator sees settings 1 by 1, not the full set
of settings being set.
* On node startup this validation is also run, so if by some means
[1] invalid config got into cluster state the exception would be thrown
to the cluster state applier, not the REST layer.
* HOST_SETTINGS is not unique in it's behavior here. For example
`xpack.monitoring.exporters.foo.use_ingest` will exibit the same behavior
if `foo` has not been defined.
[1] not sure if this a bug or feature ... but when monitoring
(and i assume any other xpack plugin) is not enabled, you can still set the
settings, but the validators will not run, allowing cluster state to be applied
without any settings validation. This likely isn't a problem, until something
gets enabled to use that un-validated cluster state (and the state is incorrect).
```
GET _xpack
...
"monitoring" : {
"available" : true,
"enabled" : false
}
```
Fixes elastic#47125
Contributor
Author
|
closing in favor of #47246 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This implementation is sufficient becuase
the settings by catching the exception and logging it.
This implementation is not ideal becuase
with only a message to the log
via the REST API.
To notify the the user that the configuration is incorrect via the
REST API and prevent persisting config to cluster state, one would
need to implement a validator via
clusterService.getClusterSettings().addAffixUpdateConsumer(HOST_SETTING , consumer, validator)However, this is not done becuase
refactored out the validation bits)
being set, just easy access to the single setting. This is an affix
setting with other highly correlated settings needed to determine
correctness. The validator sees settings 1 by 1, not the full set
of settings being set.
[1] invalid config got into cluster state the exception would be thrown
to the cluster state applier, not the REST layer.
xpack.monitoring.exporters.foo.use_ingestwill exibit the same behaviorif
foohas not been defined.Fixes #47125
EDIT: removed an incorrect statement