-
Notifications
You must be signed in to change notification settings - Fork 24.9k
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
Change skip_unavailable default value to true #105792
Change skip_unavailable default value to true #105792
Conversation
Hi @quux00, I've created a changelog YAML for you. Note that since this PR is labelled |
e634836
to
67c4f7c
Compare
In the process of doing this work (mostly fixing tests), I found some potential issues, both of which are pre-existing but now perhaps become more acute, so they may need to be addressed. (1) For (2) The However, when {
"took": 36,
"timed_out": false,
"total": 0,
"updated": 0,
"created": 0,
"deleted": 0,
"batches": 0,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
} Should the reindex API report an issue in the |
Pinging @elastic/es-search (Team:Search) |
@@ -87,7 +87,7 @@ public final class RemoteClusterService extends RemoteClusterAware implements Cl | |||
public static final Setting.AffixSetting<Boolean> REMOTE_CLUSTER_SKIP_UNAVAILABLE = Setting.affixKeySetting( | |||
"cluster.remote.", | |||
"skip_unavailable", | |||
(ns, key) -> boolSetting(key, false, new RemoteConnectionEnabled<>(ns, key), Setting.Property.Dynamic, Setting.Property.NodeScope) | |||
(ns, key) -> boolSetting(key, true, new RemoteConnectionEnabled<>(ns, key), Setting.Property.Dynamic, Setting.Property.NodeScope) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the only production code change. Everything else is tests and docs.
…ss. Multi_cluster rest-api-spec tests still failing
…qa/multi-cluster-search gradle
…-with-basic-license/build.gradle to allow tests to pass
95edc6c
to
520ec7b
Compare
…-defaults-to-true
@elasticmachine run elasticsearch-ci/part-1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a question about yaml tests and the upgrade path, LGTM otherwise
qa/multi-cluster-search/src/test/resources/rest-api-spec/test/multi_cluster/20_info.yml
Show resolved
Hide resolved
changed from `false` to `true`. Before Elasticsearch 8.15, if you want a cluster | ||
to be treated as optional for a {ccs}, then you need to set that configuration. | ||
From Elasticsearch 8.15 forward, you need to set the configuration in order to | ||
make a cluster required for the {ccs}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe obvious, but should we be explicit about the upgrade path: once you upgrade the coordinating node / cluster, where the remotes are registered, you get the new behavior? Say that the coord cluster has multiple nodes that are upgraded one by one (rolling upgrade) what would be the behavior there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, but that is very specific to a one-time upgrade, so should that go in the "permanent" API docs? Or should it go into some one-time doc like the changelog or deprecation announcement?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Normally we have migration guides for major upgrades and related changes. This is one of those changes but it goes out in a minor, I don't know if we a place for this scenario in the docs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a blurb here about that and we'll also include in the 8.15 release notes. Thanks for flagging this.
@elasticmachine test this please |
@elasticmachine run elasticsearch-ci/part-2 |
In order to improve the experience of cross-cluster search, we propose changing
the default value of the remote cluster
skip_unavailable
setting fromfalse
totrue
.This setting causes any cross-cluster search to entirely fail when any remote cluster
with
skip_unavailable=false
is either unavailable (connection to it fails) or if thesearch on it fails on all shards.
Setting
skip_unavailable=true
allows partial results from other clusters to bereturned. In that case, the search response cluster metadata will show a
skipped
status, so the user can see that no data came in from that cluster. Kibana also
now leverages this metadata in the cross-cluster search responses to allow users
to see how many clusters returned data and drill down into which clusters did not
(including failure messages).
Currently, the user/admin has to specifically set the value to
true
in the configs, like so:even though that is probably what search admins want in the vast majority of cases.
Setting
skip_unavailable=false
should be a conscious (and probably rare) choiceby an Elasticsearch admin that a particular cluster's results are so essential to a
search (or visualization in dashboard or Discover panel) that no results at all should
be shown if it cannot return any results.