Skip to content

Commit

Permalink
Default gateway.auto_import_dangling_indices to false (#59302)
Browse files Browse the repository at this point in the history
Backport of #58898.

Part of #48366. Now that there is a dedicated API for dangling indices, the auto-import
behaviour can default to off. Also add a note to the breaking changes for 7.9.0.
  • Loading branch information
pugnascotia committed Jul 15, 2020
1 parent 3e6f7d6 commit 84f4635
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 5 deletions.
26 changes: 26 additions & 0 deletions docs/reference/migration/migrate_7_9.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ your application to {es} 7.9.
See also <<release-highlights>> and <<es-release-notes>>.

* <<breaking_79_script_cache_changes>>
* <<breaking_79_settings_changes>>

//NOTE: The notable-breaking-changes tagged regions are re-used in the
//Installation and Upgrade Guide
Expand Down Expand Up @@ -67,5 +68,30 @@ setting. You may use `script.context.$CONTEXT.max_compilations_rate` for the par
context. For example, for the `processor_conditional` context, use
`script.context.processor_conditional.max_compilations_rate`.
====

[discrete]
[[breaking_79_settings_changes]]
=== Settings changes

[[deprecate_auto_import_dangling_indices]]
.Automatically importing dangling indices is disabled by default.

[%collapsible]
====
*Details* +
Automatically importing <<dangling-indices,dangling indices>> into the cluster
is unsafe and is now disabled by default. This feature will be removed entirely
in {es} 8.0.0.
*Impact* +
Use the <<dangling-indices-api,Dangling indices API>> to list, delete or import
any dangling indices manually.
Alternatively you can enable automatic imports of dangling indices, recovering
the unsafe behaviour of earlier versions, by setting
`gateway.auto_import_dangling_indices` to `true`. This setting is deprecated
and will be removed in {es} 8.0.0. We do not recommend using this setting.
====
//end::notable-breaking-changes[]
6 changes: 6 additions & 0 deletions docs/reference/release-notes/7.9.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,9 @@ Thread pool write queue size::
`indexing_pressure.memory.limit` setting. This setting configures a limit to
the number of bytes allowed to be consumed by outstanding indexing requests.
{es-issue}59263[#59263]

Dangling indices::
* Automatically importing dangling indices is now deprecated, disabled by
default, and will be removed in {es} 8.0. See the
<<deprecate_auto_import_dangling_indices,migration notes>>.
{es-pull}58176[#58176] {es-pull}58898[#58898] (issue: {es-issue}48366[#48366])
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import java.util.Locale;

import static org.elasticsearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;
import static org.elasticsearch.gateway.DanglingIndicesState.AUTO_IMPORT_DANGLING_INDICES_SETTING;
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
import static org.elasticsearch.indices.recovery.RecoverySettings.INDICES_RECOVERY_MAX_BYTES_PER_SEC_SETTING;
import static org.elasticsearch.test.NodeRoles.nonMasterNode;
Expand Down Expand Up @@ -314,11 +315,15 @@ public void test3MasterNodes2Failed() throws Exception {
public void testAllMasterEligibleNodesFailedDanglingIndexImport() throws Exception {
internalCluster().setBootstrapMasterNodeIndex(0);

Settings settings = Settings.builder()
.put(AUTO_IMPORT_DANGLING_INDICES_SETTING.getKey(), true)
.build();

logger.info("--> start mixed data and master-eligible node and bootstrap cluster");
String masterNode = internalCluster().startNode(); // node ordinal 0
String masterNode = internalCluster().startNode(settings); // node ordinal 0

logger.info("--> start data-only node and ensure 2 nodes stable cluster");
String dataNode = internalCluster().startDataOnlyNode(); // node ordinal 1
String dataNode = internalCluster().startDataOnlyNode(settings); // node ordinal 1
ensureStableCluster(2);

logger.info("--> index 1 doc and ensure index is green");
Expand All @@ -332,11 +337,18 @@ public void testAllMasterEligibleNodesFailedDanglingIndexImport() throws Excepti
assertThat(client().prepareGet("test", "type1", "1").execute().actionGet().isExists(), equalTo(true));

logger.info("--> stop data-only node and detach it from the old cluster");
Settings dataNodeDataPathSettings = internalCluster().dataPathSettings(dataNode);
Settings dataNodeDataPathSettings = Settings.builder()
.put(internalCluster().dataPathSettings(dataNode), true)
.put(AUTO_IMPORT_DANGLING_INDICES_SETTING.getKey(), true)
.build();
assertBusy(() -> internalCluster().getInstance(GatewayMetaState.class, dataNode).allPendingAsyncStatesWritten());
internalCluster().stopRandomNode(InternalTestCluster.nameFilter(dataNode));
final Environment environment = TestEnvironment.newEnvironment(
Settings.builder().put(internalCluster().getDefaultSettings()).put(dataNodeDataPathSettings).build());
Settings.builder()
.put(internalCluster().getDefaultSettings())
.put(dataNodeDataPathSettings)
.put(AUTO_IMPORT_DANGLING_INDICES_SETTING.getKey(), true)
.build());
detachCluster(environment, false);

logger.info("--> stop master-eligible node, clear its data and start it again - new cluster should form");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public class DanglingIndicesState implements ClusterStateListener {
*/
public static final Setting<Boolean> AUTO_IMPORT_DANGLING_INDICES_SETTING = Setting.boolSetting(
"gateway.auto_import_dangling_indices",
true,
false,
Setting.Property.NodeScope,
Setting.Property.Deprecated
);
Expand Down

0 comments on commit 84f4635

Please sign in to comment.