You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/05/24 11:16:35 UTC
lucene-solr:feature/autoscaling: SOLR-10738: Trigger has an init
method which is called before schedule. Actions are init'ed in this method.
Fixed NodeLostTriggerTest failures.
Repository: lucene-solr
Updated Branches:
refs/heads/feature/autoscaling fe217668c -> ce7367d54
SOLR-10738: Trigger has an init method which is called before schedule. Actions are init'ed in this method. Fixed NodeLostTriggerTest failures.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ce7367d5
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ce7367d5
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ce7367d5
Branch: refs/heads/feature/autoscaling
Commit: ce7367d54ec18940a7b778c2434ffc02bfe95a6e
Parents: fe21766
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Wed May 24 16:46:25 2017 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Wed May 24 16:46:25 2017 +0530
----------------------------------------------------------------------
.../org/apache/solr/cloud/autoscaling/AutoScaling.java | 6 ++++++
.../apache/solr/cloud/autoscaling/NodeAddedTrigger.java | 11 +++++++++++
.../apache/solr/cloud/autoscaling/NodeLostTrigger.java | 11 +++++++++++
.../solr/cloud/autoscaling/ScheduledTriggers.java | 5 +----
.../solr/cloud/autoscaling/NodeLostTriggerTest.java | 12 +++++++++++-
5 files changed, 40 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7367d5/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScaling.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScaling.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScaling.java
index 5c992b0..08ceb27 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScaling.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScaling.java
@@ -115,6 +115,12 @@ public class AutoScaling {
public boolean isClosed();
public void restoreState(Trigger<E> old);
+
+ /**
+ * Called before a trigger is scheduled. Any heavy object creation or initialisation should
+ * be done in this method instead of the Trigger's constructor.
+ */
+ public void init();
}
public static class TriggerFactory implements Closeable {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7367d5/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
index 1754a8b..93f8e84 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
@@ -82,6 +82,17 @@ public class NodeAddedTrigger implements AutoScaling.Trigger<NodeAddedTrigger.No
}
@Override
+ public void init() {
+ List<Map<String, String>> o = (List<Map<String, String>>) properties.get("actions");
+ if (o != null && !o.isEmpty()) {
+ for (int i = 0; i < o.size(); i++) {
+ Map<String, String> map = o.get(i);
+ actions.get(i).init(map);
+ }
+ }
+ }
+
+ @Override
public void setListener(AutoScaling.TriggerListener<NodeAddedEvent> listener) {
listenerRef.set(listener);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7367d5/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
index 8bca93c..b755f25 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
@@ -83,6 +83,17 @@ public class NodeLostTrigger implements AutoScaling.Trigger<NodeLostTrigger.Node
}
@Override
+ public void init() {
+ List<Map<String, String>> o = (List<Map<String, String>>) properties.get("actions");
+ if (o != null && !o.isEmpty()) {
+ for (int i = 0; i < o.size(); i++) {
+ Map<String, String> map = o.get(i);
+ actions.get(i).init(map);
+ }
+ }
+ }
+
+ @Override
public void setListener(AutoScaling.TriggerListener<NodeLostEvent> listener) {
listenerRef.set(listener);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7367d5/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
index 9c18ac2..37cb9c0 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
@@ -143,10 +143,7 @@ public class ScheduledTriggers implements Closeable {
return false;
}
});
- List<TriggerAction> actions = newTrigger.getActions();
- for (TriggerAction action : actions) {
- action.init(newTrigger.getProperties());
- }
+ newTrigger.init(); // mark as ready for scheduling
scheduledTrigger.scheduledFuture = scheduledThreadPoolExecutor.scheduleWithFixedDelay(scheduledTrigger, 0, DEFAULT_SCHEDULED_TRIGGER_DELAY_SECONDS, TimeUnit.SECONDS);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7367d5/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 efa63d3..e570142 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
@@ -196,7 +196,17 @@ public class NodeLostTriggerTest extends SolrCloudTestCase {
NodeLostTrigger trigger = new NodeLostTrigger("node_lost_trigger", props, container);
trigger.setListener(noFirstRunListener);
trigger.run();
- newNode.stop();
+
+ // stop the newly created node
+ List<JettySolrRunner> jettySolrRunners = cluster.getJettySolrRunners();
+ for (int i = 0; i < jettySolrRunners.size(); i++) {
+ JettySolrRunner jettySolrRunner = jettySolrRunners.get(i);
+ if (newNode == jettySolrRunner) {
+ cluster.stopJettySolrRunner(i);
+ break;
+ }
+ }
+
trigger.run(); // this run should detect the lost node
trigger.close(); // close the old trigger