From commits-return-100005-archive-asf-public=cust-asf.ponee.io@lucene.apache.org Tue Apr 3 19:05:48 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 300B918064D for ; Tue, 3 Apr 2018 19:05:47 +0200 (CEST) Received: (qmail 18272 invoked by uid 500); 3 Apr 2018 17:05:46 -0000 Mailing-List: contact commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list commits@lucene.apache.org Received: (qmail 18263 invoked by uid 99); 3 Apr 2018 17:05:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Apr 2018 17:05:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id BB968EB4F4; Tue, 3 Apr 2018 17:05:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ab@apache.org To: commits@lucene.apache.org Date: Tue, 03 Apr 2018 17:05:45 -0000 Message-Id: <881c1cbcb33e4fac81a8a2a46e9522c1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] lucene-solr:branch_7x: SOLR-12095: AutoScalingHandler should validate triggers before updating zookeeper. Repository: lucene-solr Updated Branches: refs/heads/branch_7x b772b585a -> 606cfd57f http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java index 6b1af65..b756dcd 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java @@ -19,7 +19,6 @@ package org.apache.solr.cloud.autoscaling; import java.lang.invoke.MethodHandles; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; @@ -313,10 +312,10 @@ public class NodeLostTriggerIntegrationTest extends SolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestTriggerAction init"); actionInitCalled.countDown(); - super.init(args); + super.init(); } } } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java index d9c9571..00f7d42 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java @@ -27,10 +27,12 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import org.apache.solr.client.solrj.cloud.SolrCloudManager; import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.core.CoreContainer; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -73,8 +75,9 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { long waitForSeconds = 1 + random().nextInt(5); Map props = createTriggerProps(waitForSeconds); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger")) { + trigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); trigger.run(); String lostNodeName1 = cluster.getJettySolrRunner(1).getNodeName(); @@ -118,10 +121,11 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { // remove a node but add it back before the waitFor period expires // and assert that the trigger doesn't fire at all - try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger")) { + trigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); final long waitTime = 2; props.put("waitFor", waitTime); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); trigger.run(); @@ -175,8 +179,8 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { action.put("name", "testActionInit"); action.put("class", AssertInitTriggerAction.class.getName()); actions.add(action); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger")) { + trigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); assertEquals(true, actionConstructorCalled.get()); assertEquals(false, actionInitCalled.get()); assertEquals(false, actionCloseCalled.get()); @@ -193,6 +197,16 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { } @Override + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map properties) throws TriggerValidationException { + + } + + @Override + public void init() { + actionInitCalled.compareAndSet(false, true); + } + + @Override public String getName() { return ""; } @@ -207,18 +221,15 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { actionCloseCalled.compareAndSet(false, true); } - @Override - public void init(Map args) { - actionInitCalled.compareAndSet(false, true); - } } @Test public void testListenerAcceptance() throws Exception { CoreContainer container = cluster.getJettySolrRunners().get(0).getCoreContainer(); Map props = createTriggerProps(0); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger")) { + trigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); JettySolrRunner newNode = cluster.startJettySolrRunner(); @@ -272,8 +283,9 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { // remove a node but update the trigger before the waitFor period expires // and assert that the new trigger still fires - NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager()); + NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger"); + trigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); trigger.run(); @@ -290,8 +302,9 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { trigger.run(); // this run should detect the lost node trigger.close(); // close the old trigger - try (NodeLostTrigger newTrigger = new NodeLostTrigger("some_different_name", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger newTrigger = new NodeLostTrigger("some_different_name")) { + newTrigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); + newTrigger.init(); try { newTrigger.restoreState(trigger); fail("Trigger should only be able to restore state from an old trigger of the same name"); @@ -300,8 +313,9 @@ public class NodeLostTriggerTest extends SolrCloudTestCase { } } - try (NodeLostTrigger newTrigger = new NodeLostTrigger("node_lost_trigger", props, container.getResourceLoader(), - container.getZkController().getSolrCloudManager())) { + try (NodeLostTrigger newTrigger = new NodeLostTrigger("node_lost_trigger")) { + newTrigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props); + newTrigger.init(); AtomicBoolean fired = new AtomicBoolean(false); AtomicReference eventRef = new AtomicReference<>(); newTrigger.setProcessor(event -> { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeMarkersRegistrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeMarkersRegistrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeMarkersRegistrationTest.java index e88324e..b4ad3d5 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeMarkersRegistrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeMarkersRegistrationTest.java @@ -20,7 +20,6 @@ package org.apache.solr.cloud.autoscaling; import java.lang.invoke.MethodHandles; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.concurrent.ConcurrentHashMap; @@ -266,9 +265,9 @@ public class NodeMarkersRegistrationTest extends SolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestEventMarkerAction init"); - super.init(args); + super.init(); } } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java index a3417cf..4949e6f 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java @@ -19,7 +19,6 @@ package org.apache.solr.cloud.autoscaling; import java.lang.invoke.MethodHandles; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; @@ -160,10 +159,10 @@ public class RestoreTriggerStateTest extends SolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestTriggerAction init"); actionInitCalled.countDown(); - super.init(args); + super.init(); } } } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java index acd548c..ffcab4d 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledMaintenanceTriggerTest.java @@ -37,6 +37,7 @@ import org.apache.solr.cloud.autoscaling.sim.SimCloudManager; import org.apache.solr.common.cloud.ClusterState; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.After; import org.junit.AfterClass; @@ -122,8 +123,8 @@ public class ScheduledMaintenanceTriggerTest extends SolrCloudTestCase { public static class CapturingTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); listenerCreated.countDown(); } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledTriggerTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledTriggerTest.java index 6fedd95..012dd94 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ScheduledTriggerTest.java @@ -81,8 +81,8 @@ public class ScheduledTriggerTest extends SolrCloudTestCase { Map properties = createTriggerProperties(new Date(threeDaysAgo).toInstant().toString(), TimeZone.getDefault().getID(), "+2DAYS", "+1HOUR"); - try (ScheduledTrigger scheduledTrigger = new ScheduledTrigger("sched1", properties, - container.getResourceLoader(), container.getZkController().getSolrCloudManager())) { + try (ScheduledTrigger scheduledTrigger = new ScheduledTrigger("sched1")) { + scheduledTrigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), properties); scheduledTrigger.init(); AtomicReference eventRef = new AtomicReference<>(); scheduledTrigger.setProcessor(event -> { @@ -94,9 +94,9 @@ public class ScheduledTriggerTest extends SolrCloudTestCase { } } - private void scheduledTriggerTest(CoreContainer container, Map properties) throws IOException, InterruptedException { - try (ScheduledTrigger scheduledTrigger = new ScheduledTrigger("sched1", properties, - container.getResourceLoader(), container.getZkController().getSolrCloudManager())) { + private void scheduledTriggerTest(CoreContainer container, Map properties) throws Exception { + try (ScheduledTrigger scheduledTrigger = new ScheduledTrigger("sched1")) { + scheduledTrigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), properties); scheduledTrigger.init(); scheduledTrigger.setProcessor(noFirstRunProcessor); scheduledTrigger.run(); @@ -119,7 +119,7 @@ public class ScheduledTriggerTest extends SolrCloudTestCase { private Map createTriggerProperties(String startTime, String timeZone, String every, String graceTime) { Map properties = new HashMap<>(); - properties.put("graceTime", graceTime); + properties.put("graceDuration", graceTime); properties.put("startTime", startTime); properties.put("timeZone", timeZone); properties.put("every", every); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java index 547be5c..796670a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java @@ -41,6 +41,7 @@ import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.BeforeClass; import org.junit.Test; @@ -202,8 +203,8 @@ public class SearchRateTriggerIntegrationTest extends SolrCloudTestCase { public static class TestTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); listenerCreated.countDown(); } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java index 081cd90..1c72649 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java @@ -83,7 +83,9 @@ public class SearchRateTriggerTest extends SolrCloudTestCase { final List events = new ArrayList<>(); CloudSolrClient solrClient = cluster.getSolrClient(); - try (SearchRateTrigger trigger = new SearchRateTrigger("search_rate_trigger", props, loader, cloudManager)) { + try (SearchRateTrigger trigger = new SearchRateTrigger("search_rate_trigger")) { + trigger.configure(loader, cloudManager, props); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); trigger.run(); trigger.setProcessor(event -> events.add(event)); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java index 8d69bad..6cf424a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java @@ -38,6 +38,7 @@ import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.common.params.AutoScalingParams; import org.apache.solr.common.util.NamedList; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.BeforeClass; import org.junit.Test; @@ -214,17 +215,17 @@ public class TriggerCooldownIntegrationTest extends SolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestTriggerAction init"); actionInitCalled.countDown(); - super.init(args); + super.init(); } } public static class TestTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); listenerCreated.countDown(); } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java index 2902c48..454a935 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java @@ -46,6 +46,7 @@ import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.TimeSource; import org.apache.solr.common.util.Utils; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.apache.zookeeper.data.Stat; import org.junit.Before; @@ -400,10 +401,10 @@ public class TriggerIntegrationTest extends SolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestTriggerAction init"); actionInitCalled.countDown(); - super.init(args); + super.init(); } } @@ -432,10 +433,10 @@ public class TriggerIntegrationTest extends SolrCloudTestCase { } @Override - public void init(Map args) { - log.debug("TestTriggerAction init"); + public void init() throws Exception { + log.info("TestEventQueueAction init"); actionInitCalled.countDown(); - super.init(args); + super.init(); } } @@ -504,8 +505,8 @@ public class TriggerIntegrationTest extends SolrCloudTestCase { public static class TestTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); listenerCreated.countDown(); } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java index 5f4243f..0ee0e1c 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java @@ -80,7 +80,7 @@ public class TriggerSetPropertiesIntegrationTest extends SolrCloudTestCase { try (ScheduledTriggers scheduledTriggers = new ScheduledTriggers(resourceLoader, solrCloudManager)) { AutoScalingConfig config = new AutoScalingConfig(Collections.emptyMap()); scheduledTriggers.setAutoScalingConfig(config); - scheduledTriggers.add(new TriggerBase(TriggerEventType.NODELOST, "x", Collections.emptyMap(), resourceLoader, solrCloudManager) { + AutoScaling.Trigger t = new TriggerBase(TriggerEventType.NODELOST, "x") { @Override protected Map getState() { return Collections.singletonMap("x", "y"); @@ -103,7 +103,10 @@ public class TriggerSetPropertiesIntegrationTest extends SolrCloudTestCase { diff.set(timeSource.getTimeNs() - l); getTriggerFiredLatch().countDown(); } - }); + }; + t.configure(runner.getCoreContainer().getResourceLoader(), runner.getCoreContainer().getZkController().getSolrCloudManager(), Collections.emptyMap()); + scheduledTriggers.add(t); + assertTrue(getTriggerFiredLatch().await(4, TimeUnit.SECONDS)); assertTrue(diff.get() - TimeUnit.SECONDS.toNanos(ScheduledTriggers.DEFAULT_SCHEDULED_TRIGGER_DELAY_SECONDS) >= 0); @@ -125,7 +128,7 @@ public class TriggerSetPropertiesIntegrationTest extends SolrCloudTestCase { final Set triggerNames = Collections.synchronizedSet(new HashSet<>()); triggerFiredLatch = new CountDownLatch(8); for (int i = 0; i < 8; i++) { - triggerList.add(new MockTrigger(TriggerEventType.NODELOST, "x" + i, Collections.emptyMap(), resourceLoader, solrCloudManager) { + AutoScaling.Trigger trigger = new MockTrigger(TriggerEventType.NODELOST, "x" + i) { @Override public void run() { try { @@ -140,8 +143,10 @@ public class TriggerSetPropertiesIntegrationTest extends SolrCloudTestCase { threadNames.add(Thread.currentThread().getName()); } } - }); - scheduledTriggers.add(triggerList.get(i)); + }; + trigger.configure(resourceLoader, solrCloudManager, Collections.emptyMap()); + triggerList.add(trigger); + scheduledTriggers.add(trigger); } assertTrue("Timed out waiting for latch to fire", getTriggerFiredLatch().await(20, TimeUnit.SECONDS)); assertEquals("Expected 8 triggers but found: " + triggerNames, 8, triggerNames.size()); @@ -168,8 +173,8 @@ public class TriggerSetPropertiesIntegrationTest extends SolrCloudTestCase { public static class MockTrigger extends TriggerBase { - public MockTrigger(TriggerEventType eventType, String name, Map properties, SolrResourceLoader loader, SolrCloudManager cloudManager) { - super(eventType, name, properties, loader, cloudManager); + public MockTrigger(TriggerEventType eventType, String name) { + super(eventType, name); } @Override http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java index 4dde7b6..cdc4173 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java @@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrResponse; +import org.apache.solr.client.solrj.cloud.SolrCloudManager; import org.apache.solr.client.solrj.cloud.autoscaling.TriggerEventType; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.cloud.CloudTestUtils; @@ -38,6 +39,7 @@ import org.apache.solr.cloud.autoscaling.ComputePlanAction; import org.apache.solr.cloud.autoscaling.ScheduledTriggers; import org.apache.solr.cloud.autoscaling.TriggerAction; import org.apache.solr.cloud.autoscaling.TriggerEvent; +import org.apache.solr.cloud.autoscaling.TriggerValidationException; import org.apache.solr.common.cloud.ClusterState; import org.apache.solr.common.cloud.DocCollection; import org.apache.solr.common.cloud.Replica; @@ -46,6 +48,7 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.TimeSource; import org.apache.solr.common.util.Utils; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.After; import org.junit.Before; @@ -319,6 +322,16 @@ public class TestComputePlanAction extends SimSolrCloudTestCase { static String expectedNode; @Override + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map properties) throws TriggerValidationException { + + } + + @Override + public void init() { + + } + + @Override public String getName() { return null; } @@ -340,10 +353,5 @@ public class TestComputePlanAction extends SimSolrCloudTestCase { public void close() throws IOException { } - - @Override - public void init(Map args) { - - } } } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java index a030d8a..9117dcd 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java @@ -103,7 +103,7 @@ public class TestExecutePlanAction extends SimSolrCloudTestCase { String survivor = otherNodes.get(0); try (ExecutePlanAction action = new ExecutePlanAction()) { - action.init(Collections.singletonMap("name", "execute_plan")); + action.configure(cluster.getLoader(), cluster, Collections.singletonMap("name", "execute_plan")); // used to signal if we found that ExecutePlanAction did in fact create the right znode before executing the operation AtomicBoolean znodeCreated = new AtomicBoolean(false); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java index 4cd74e6..14ac40f 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java @@ -50,12 +50,14 @@ import org.apache.solr.cloud.autoscaling.TriggerActionBase; import org.apache.solr.cloud.autoscaling.TriggerEvent; import org.apache.solr.cloud.autoscaling.TriggerListenerBase; import org.apache.solr.cloud.autoscaling.CapturedEvent; +import org.apache.solr.cloud.autoscaling.TriggerValidationException; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.cloud.Replica; import org.apache.solr.common.params.CollectionParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.Pair; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.Before; import org.junit.BeforeClass; @@ -108,8 +110,8 @@ public class TestLargeCluster extends SimSolrCloudTestCase { public static class TestTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); } @Override http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java index eafc300..fd816ca 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java @@ -27,12 +27,15 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import org.apache.solr.client.solrj.cloud.SolrCloudManager; import org.apache.solr.cloud.autoscaling.ActionContext; import org.apache.solr.cloud.autoscaling.AutoScaling; import org.apache.solr.cloud.autoscaling.NodeAddedTrigger; import org.apache.solr.cloud.autoscaling.TriggerAction; import org.apache.solr.cloud.autoscaling.TriggerEvent; +import org.apache.solr.cloud.autoscaling.TriggerValidationException; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -75,7 +78,8 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { long waitForSeconds = 1 + random().nextInt(5); Map props = createTriggerProps(waitForSeconds); - try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); trigger.setProcessor(noFirstRunProcessor); trigger.run(); @@ -115,7 +119,9 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { // add a new node but remove it before the waitFor period expires // and assert that the trigger doesn't fire at all - try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); + trigger.init(); final long waitTime = 2; props.put("waitFor", waitTime); trigger.setProcessor(noFirstRunProcessor); @@ -159,7 +165,8 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { action.put("name", "testActionInit"); action.put("class", TestNodeAddedTrigger.AssertInitTriggerAction.class.getName()); actions.add(action); - try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); assertEquals(true, actionConstructorCalled.get()); assertEquals(false, actionInitCalled.get()); assertEquals(false, actionCloseCalled.get()); @@ -176,6 +183,16 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { } @Override + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map properties) throws TriggerValidationException { + + } + + @Override + public void init() { + actionInitCalled.compareAndSet(false, true); + } + + @Override public String getName() { return ""; } @@ -189,17 +206,14 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { public void close() throws IOException { actionCloseCalled.compareAndSet(false, true); } - - @Override - public void init(Map args) { - actionInitCalled.compareAndSet(false, true); - } - } + } @Test public void testListenerAcceptance() throws Exception { Map props = createTriggerProps(0); - try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); + trigger.init(); trigger.setProcessor(noFirstRunProcessor); trigger.run(); // starts tracking live nodes @@ -234,7 +248,8 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { // add a new node but update the trigger before the waitFor period expires // and assert that the new trigger still fires - NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster); + NodeAddedTrigger trigger = new NodeAddedTrigger("node_added_trigger"); + trigger.configure(cluster.getLoader(), cluster, props); trigger.setProcessor(noFirstRunProcessor); trigger.run(); @@ -242,7 +257,8 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { trigger.run(); // this run should detect the new node trigger.close(); // close the old trigger - try (NodeAddedTrigger newTrigger = new NodeAddedTrigger("some_different_name", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger newTrigger = new NodeAddedTrigger("some_different_name")) { + newTrigger.configure(cluster.getLoader(), cluster, props); try { newTrigger.restoreState(trigger); fail("Trigger should only be able to restore state from an old trigger of the same name"); @@ -251,7 +267,8 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase { } } - try (NodeAddedTrigger newTrigger = new NodeAddedTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeAddedTrigger newTrigger = new NodeAddedTrigger("node_added_trigger")) { + newTrigger.configure(cluster.getLoader(), cluster, props); AtomicBoolean fired = new AtomicBoolean(false); AtomicReference eventRef = new AtomicReference<>(); newTrigger.setProcessor(event -> { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java index 56a8176..33c2efa 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java @@ -28,12 +28,15 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import org.apache.solr.client.solrj.cloud.SolrCloudManager; import org.apache.solr.cloud.autoscaling.ActionContext; import org.apache.solr.cloud.autoscaling.AutoScaling; import org.apache.solr.cloud.autoscaling.NodeLostTrigger; import org.apache.solr.cloud.autoscaling.TriggerAction; import org.apache.solr.cloud.autoscaling.TriggerEvent; +import org.apache.solr.cloud.autoscaling.TriggerValidationException; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -75,7 +78,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { long waitForSeconds = 1 + random().nextInt(5); Map props = createTriggerProps(waitForSeconds); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); trigger.setProcessor(noFirstRunProcessor); trigger.run(); Iterator it = cluster.getLiveNodesSet().get().iterator(); @@ -120,7 +124,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { // remove a node but add it back before the waitFor period expires // and assert that the trigger doesn't fire at all - try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); final long waitTime = 2; props.put("waitFor", waitTime); trigger.setProcessor(noFirstRunProcessor); @@ -175,7 +180,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { action.put("name", "testActionInit"); action.put("class", AssertInitTriggerAction.class.getName()); actions.add(action); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); assertEquals(true, actionConstructorCalled.get()); assertEquals(false, actionInitCalled.get()); assertEquals(false, actionCloseCalled.get()); @@ -192,6 +198,16 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { } @Override + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map properties) throws TriggerValidationException { + + } + + @Override + public void init() { + actionInitCalled.compareAndSet(false, true); + } + + @Override public String getName() { return ""; } @@ -205,17 +221,13 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { public void close() throws IOException { actionCloseCalled.compareAndSet(false, true); } - - @Override - public void init(Map args) { - actionInitCalled.compareAndSet(false, true); - } } @Test public void testListenerAcceptance() throws Exception { Map props = createTriggerProps(0); - try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger trigger = new NodeLostTrigger("node_added_trigger")) { + trigger.configure(cluster.getLoader(), cluster, props); trigger.setProcessor(noFirstRunProcessor); String newNode = cluster.simAddNode(); @@ -258,7 +270,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { // remove a node but update the trigger before the waitFor period expires // and assert that the new trigger still fires - NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, cluster.getLoader(), cluster); + NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger"); + trigger.configure(cluster.getLoader(), cluster, props); trigger.setProcessor(noFirstRunProcessor); trigger.run(); @@ -268,7 +281,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { trigger.run(); // this run should detect the lost node trigger.close(); // close the old trigger - try (NodeLostTrigger newTrigger = new NodeLostTrigger("some_different_name", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger newTrigger = new NodeLostTrigger("some_different_name")) { + newTrigger.configure(cluster.getLoader(), cluster, props); try { newTrigger.restoreState(trigger); fail("Trigger should only be able to restore state from an old trigger of the same name"); @@ -277,7 +291,8 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase { } } - try (NodeLostTrigger newTrigger = new NodeLostTrigger("node_lost_trigger", props, cluster.getLoader(), cluster)) { + try (NodeLostTrigger newTrigger = new NodeLostTrigger("node_lost_trigger")) { + newTrigger.configure(cluster.getLoader(), cluster, props); AtomicBoolean fired = new AtomicBoolean(false); AtomicReference eventRef = new AtomicReference<>(); newTrigger.setProcessor(event -> { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7c0d50c6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java index fc06b50..31e3636 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java @@ -51,10 +51,12 @@ import org.apache.solr.cloud.autoscaling.TriggerEvent; import org.apache.solr.cloud.autoscaling.TriggerEventQueue; import org.apache.solr.cloud.autoscaling.TriggerListenerBase; import org.apache.solr.cloud.autoscaling.CapturedEvent; +import org.apache.solr.cloud.autoscaling.TriggerValidationException; import org.apache.solr.common.cloud.LiveNodesListener; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.TimeSource; +import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.apache.solr.util.TimeOut; import org.junit.Before; @@ -570,11 +572,12 @@ public class TestTriggerIntegration extends SimSolrCloudTestCase { } @Override - public void init(Map args) { + public void init() throws Exception { log.info("TestTriggerAction init"); + super.init(); actionInitCalled.countDown(); - super.init(args); } + } public static class TestEventQueueAction extends TriggerActionBase { @@ -599,10 +602,10 @@ public class TestTriggerIntegration extends SimSolrCloudTestCase { } @Override - public void init(Map args) { + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map args) throws TriggerValidationException { log.debug("TestTriggerAction init"); actionInitCalled.countDown(); - super.init(args); + super.configure(loader, cloudManager, args); } } @@ -760,10 +763,10 @@ public class TestTriggerIntegration extends SimSolrCloudTestCase { } @Override - public void init(Map args) { + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, Map args) throws TriggerValidationException { log.info("TestEventMarkerAction init"); actionInitCalled.countDown(); - super.init(args); + super.configure(loader, cloudManager, args); } } @@ -884,8 +887,8 @@ public class TestTriggerIntegration extends SimSolrCloudTestCase { public static class TestTriggerListener extends TriggerListenerBase { @Override - public void init(SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) { - super.init(cloudManager, config); + public void configure(SolrResourceLoader loader, SolrCloudManager cloudManager, AutoScalingConfig.TriggerListenerConfig config) throws TriggerValidationException { + super.configure(loader, cloudManager, config); listenerCreated.countDown(); }