From 78ccb3c87040d2928fa95a387d1a3090ea054a7a Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Mon, 14 Jan 2019 10:24:10 -0700 Subject: [PATCH 1/5] Do not add index event listener if CCR disabled Currently we add the `CcrRestoreSourceService` as a index event listener. However, if ccr is disabled, this service is null and we attempt to add a null listener throwing an exception. This commit only adds the listener if ccr is enabled. --- .../ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java index b3d2d05048211..c487565c2b3ae 100644 --- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java +++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/Ccr.java @@ -294,7 +294,9 @@ public Map getInternalRepositories(Environment env, @Override public void onIndexModule(IndexModule indexModule) { - indexModule.addIndexEventListener(this.restoreSourceService.get()); + if (enabled) { + indexModule.addIndexEventListener(this.restoreSourceService.get()); + } } protected XPackLicenseState getLicenseState() { return XPackPlugin.getSharedLicenseState(); } From 3c91938e22e35801da812f3f05c11980b5f0b65a Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Mon, 14 Jan 2019 11:13:51 -0700 Subject: [PATCH 2/5] Add test --- .../xpack/ccr/CcrDisabledIT.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java new file mode 100644 index 0000000000000..353d142339b72 --- /dev/null +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +package org.elasticsearch.xpack.ccr; + +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.test.ESIntegTestCase; +import org.elasticsearch.xpack.core.XPackSettings; + +import java.util.Arrays; +import java.util.Collection; + +public class CcrDisabledIT extends ESIntegTestCase { + + public void testClusterCanStartWithCcrInstalledButNotEnabled() throws Exception { + ensureGreen(); + } + + @Override + protected Settings nodeSettings(int nodeOrdinal) { + return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put(XPackSettings.CCR_ENABLED_SETTING.getKey(), false).build(); + } + + @Override + protected Collection> nodePlugins() { + return Arrays.asList(LocalStateCcr.class); + } +} From 976eeebc9ca4d0b669a1ef5fac3630601aa4c730 Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Mon, 14 Jan 2019 15:19:59 -0700 Subject: [PATCH 3/5] Work on changes --- .../xpack/ccr/CcrDisabledIT.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java index 353d142339b72..0a7446f348a46 100644 --- a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java @@ -8,25 +8,44 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.protocol.xpack.XPackInfoRequest; +import org.elasticsearch.protocol.xpack.XPackInfoResponse; import org.elasticsearch.test.ESIntegTestCase; +import org.elasticsearch.xpack.core.XPackClient; +import org.elasticsearch.xpack.core.XPackClientPlugin; import org.elasticsearch.xpack.core.XPackSettings; import java.util.Arrays; import java.util.Collection; +import java.util.EnumSet; public class CcrDisabledIT extends ESIntegTestCase { public void testClusterCanStartWithCcrInstalledButNotEnabled() throws Exception { ensureGreen(); + XPackClient xPackClient = new XPackClient(client()); + XPackInfoResponse response = xPackClient.prepareInfo().setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES)).get(); + XPackInfoResponse.FeatureSetsInfo featureSetsInfo = response.getFeatureSetsInfo(); } @Override protected Settings nodeSettings(int nodeOrdinal) { - return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put(XPackSettings.CCR_ENABLED_SETTING.getKey(), false).build(); + return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put(XPackSettings.CCR_ENABLED_SETTING.getKey(), true) + .put(XPackSettings.SECURITY_ENABLED.getKey(), false).build(); + } + + @Override + protected Settings transportClientSettings() { + return Settings.builder().put(super.transportClientSettings()).put(XPackSettings.SECURITY_ENABLED.getKey(), false).build(); } @Override protected Collection> nodePlugins() { return Arrays.asList(LocalStateCcr.class); } + + @Override + protected Collection> transportClientPlugins() { + return Arrays.asList(XPackClientPlugin.class); + } } From b4fedc8329f7f96bf7f8248bacf2afa7de9cc3db Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Tue, 15 Jan 2019 12:48:31 -0700 Subject: [PATCH 4/5] Add todo --- .../org/elasticsearch/xpack/ccr/CcrDisabledIT.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java index 0a7446f348a46..fb1d04d4caaec 100644 --- a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java @@ -8,24 +8,19 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.protocol.xpack.XPackInfoRequest; -import org.elasticsearch.protocol.xpack.XPackInfoResponse; import org.elasticsearch.test.ESIntegTestCase; -import org.elasticsearch.xpack.core.XPackClient; import org.elasticsearch.xpack.core.XPackClientPlugin; import org.elasticsearch.xpack.core.XPackSettings; import java.util.Arrays; import java.util.Collection; -import java.util.EnumSet; +import java.util.Collections; public class CcrDisabledIT extends ESIntegTestCase { public void testClusterCanStartWithCcrInstalledButNotEnabled() throws Exception { + // TODO: Assert that x-pack ccr feature is not enabled once feature functionality has been added ensureGreen(); - XPackClient xPackClient = new XPackClient(client()); - XPackInfoResponse response = xPackClient.prepareInfo().setCategories(EnumSet.of(XPackInfoRequest.Category.FEATURES)).get(); - XPackInfoResponse.FeatureSetsInfo featureSetsInfo = response.getFeatureSetsInfo(); } @Override @@ -41,11 +36,11 @@ protected Settings transportClientSettings() { @Override protected Collection> nodePlugins() { - return Arrays.asList(LocalStateCcr.class); + return Collections.singletonList(LocalStateCcr.class); } @Override protected Collection> transportClientPlugins() { - return Arrays.asList(XPackClientPlugin.class); + return Collections.singletonList(XPackClientPlugin.class); } } From e10820e5d29f4625efb4067150a432d267b1be8a Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Tue, 15 Jan 2019 12:48:47 -0700 Subject: [PATCH 5/5] Fix checkstyle --- .../src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java index fb1d04d4caaec..92e0ea06a30e7 100644 --- a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrDisabledIT.java @@ -12,7 +12,6 @@ import org.elasticsearch.xpack.core.XPackClientPlugin; import org.elasticsearch.xpack.core.XPackSettings; -import java.util.Arrays; import java.util.Collection; import java.util.Collections;