You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/05/24 14:56:09 UTC
[5/7] lucene-solr:jira/solr-10515: Merge branch 'feature/autoscaling'
into jira/solr-10515
Merge branch 'feature/autoscaling' into jira/solr-10515
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a35852e7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a35852e7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a35852e7
Branch: refs/heads/jira/solr-10515
Commit: a35852e726392fbbe971b826780b3c9e4da68828
Parents: 15d637f fe21766
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed May 24 11:12:02 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed May 24 11:12:02 2017 +0200
----------------------------------------------------------------------
solr/CHANGES.txt | 2 +
.../cloud/autoscaling/NodeAddedTrigger.java | 1 -
.../solr/cloud/autoscaling/NodeLostTrigger.java | 1 -
.../cloud/autoscaling/ScheduledTriggers.java | 4 ++
.../autoscaling/TriggerIntegrationTest.java | 6 +--
.../apache/solr/cloud/autoscaling/Policy.java | 57 ++++++++++++++++----
.../solr/cloud/autoscaling/PolicyHelper.java | 8 +--
7 files changed, 56 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a35852e7/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a35852e7/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a35852e7/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a35852e7/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
----------------------------------------------------------------------
diff --cc solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
index c43fabf,db15f6c..23c1391
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
@@@ -572,64 -506,8 +571,65 @@@ public class TriggerIntegrationTest ext
@Override
public void init(Map<String, String> args) {
-
+ log.info("TestTriggerAction init");
+ actionCreated.countDown();
}
}
+
+ @Test
+ public void testEventQueue() throws Exception {
+ CloudSolrClient solrClient = cluster.getSolrClient();
+ String setTriggerCommand = "{" +
+ "'set-trigger' : {" +
+ "'name' : 'node_added_trigger1'," +
+ "'event' : 'nodeAdded'," +
+ "'waitFor' : '" + waitForSeconds + "s'," +
+ "'enabled' : true," +
+ "'actions' : [{'name':'test','class':'" + TestEventQueueAction.class.getName() + "'}]" +
+ "}}";
+ NamedList<Object> overSeerStatus = cluster.getSolrClient().request(CollectionAdminRequest.getOverseerStatus());
+ String overseerLeader = (String) overSeerStatus.get("leader");
+ int overseerLeaderIndex = 0;
+ for (int i = 0; i < cluster.getJettySolrRunners().size(); i++) {
+ JettySolrRunner jetty = cluster.getJettySolrRunner(i);
+ if (jetty.getNodeName().equals(overseerLeader)) {
+ overseerLeaderIndex = i;
+ break;
+ }
+ }
+ SolrRequest req = new AutoScalingHandlerTest.AutoScalingRequest(SolrRequest.METHOD.POST, path, setTriggerCommand);
+ NamedList<Object> response = solrClient.request(req);
+ assertEquals(response.get("result").toString(), "success");
+
+ if (!actionCreated.await(3, TimeUnit.SECONDS)) {
+ fail("The TriggerAction should have been created by now");
+ }
+
+ // add node to generate the event
+ JettySolrRunner newNode = cluster.startJettySolrRunner();
+ // we are the first party so we expect index 1
+ int await = actionStarted.await(60, TimeUnit.SECONDS);
+ assertEquals("action started too early", 1, await);
+ // event should be there
+ NodeAddedTrigger.NodeAddedEvent nodeAddedEvent = (NodeAddedTrigger.NodeAddedEvent) eventRef.get();
+ assertNotNull(nodeAddedEvent);
+ // but action did not complete yet so the event is still enqueued
+ assertFalse(triggerFired.get());
+ actionStarted.reset();
+ // kill overseer leader
+ cluster.stopJettySolrRunner(overseerLeaderIndex);
+ Thread.sleep(5000);
+ // we are the last party, so we expect index 0
+ await = actionInterrupted.await(3, TimeUnit.SECONDS);
+ assertEquals("action wasn't interrupted", 0, await);
+ // new overseer leader should be elected and run triggers
+ newNode = cluster.startJettySolrRunner();
+ // it should fire again but not complete yet
+ await = actionStarted.await(60, TimeUnit.SECONDS);
+ TriggerEvent replayedEvent = eventRef.get();
+ assertTrue(replayedEvent.getProperty(TriggerEventQueue.ENQUEUE_TIME) != null);
+ assertTrue(replayedEvent.getProperty(TriggerEventQueue.DEQUEUE_TIME) != null);
+ await = actionCompleted.await(10, TimeUnit.SECONDS);
+ assertTrue(triggerFired.get());
+ }
}