Search in sources :

Example 1 with NodesHotThreadsRequestBuilder

use of org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsRequestBuilder in project elasticsearch by elastic.

the class HotThreadsIT method testHotThreadsDontFail.

public void testHotThreadsDontFail() throws ExecutionException, InterruptedException {
    /**
         * This test just checks if nothing crashes or gets stuck etc.
         */
    createIndex("test");
    final int iters = scaledRandomIntBetween(2, 20);
    final AtomicBoolean hasErrors = new AtomicBoolean(false);
    for (int i = 0; i < iters; i++) {
        final String type;
        NodesHotThreadsRequestBuilder nodesHotThreadsRequestBuilder = client().admin().cluster().prepareNodesHotThreads();
        if (randomBoolean()) {
            TimeValue timeValue = new TimeValue(rarely() ? randomIntBetween(500, 5000) : randomIntBetween(20, 500));
            nodesHotThreadsRequestBuilder.setInterval(timeValue);
        }
        if (randomBoolean()) {
            nodesHotThreadsRequestBuilder.setThreads(rarely() ? randomIntBetween(500, 5000) : randomIntBetween(1, 500));
        }
        nodesHotThreadsRequestBuilder.setIgnoreIdleThreads(randomBoolean());
        if (randomBoolean()) {
            switch(randomIntBetween(0, 2)) {
                case 2:
                    type = "cpu";
                    break;
                case 1:
                    type = "wait";
                    break;
                default:
                    type = "block";
                    break;
            }
            assertThat(type, notNullValue());
            nodesHotThreadsRequestBuilder.setType(type);
        } else {
            type = null;
        }
        final CountDownLatch latch = new CountDownLatch(1);
        nodesHotThreadsRequestBuilder.execute(new ActionListener<NodesHotThreadsResponse>() {

            @Override
            public void onResponse(NodesHotThreadsResponse nodeHotThreads) {
                boolean success = false;
                try {
                    assertThat(nodeHotThreads, notNullValue());
                    Map<String, NodeHotThreads> nodesMap = nodeHotThreads.getNodesMap();
                    assertThat(nodesMap.size(), equalTo(cluster().size()));
                    for (NodeHotThreads ht : nodeHotThreads.getNodes()) {
                        assertNotNull(ht.getHotThreads());
                    //logger.info(ht.getHotThreads());
                    }
                    success = true;
                } finally {
                    if (!success) {
                        hasErrors.set(true);
                    }
                    latch.countDown();
                }
            }

            @Override
            public void onFailure(Exception e) {
                logger.error("FAILED", e);
                hasErrors.set(true);
                latch.countDown();
                fail();
            }
        });
        indexRandom(true, client().prepareIndex("test", "type1", "1").setSource("field1", "value1"), client().prepareIndex("test", "type1", "2").setSource("field1", "value2"), client().prepareIndex("test", "type1", "3").setSource("field1", "value3"));
        ensureSearchable();
        while (latch.getCount() > 0) {
            assertHitCount(client().prepareSearch().setQuery(matchAllQuery()).setPostFilter(boolQuery().must(matchAllQuery()).mustNot(boolQuery().must(termQuery("field1", "value1")).must(termQuery("field1", "value2")))).get(), 3L);
        }
        latch.await();
        assertThat(hasErrors.get(), is(false));
    }
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) NodesHotThreadsRequestBuilder(org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsRequestBuilder) NodeHotThreads(org.elasticsearch.action.admin.cluster.node.hotthreads.NodeHotThreads) CountDownLatch(java.util.concurrent.CountDownLatch) NodesHotThreadsResponse(org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsResponse) Map(java.util.Map) TimeValue(org.elasticsearch.common.unit.TimeValue) ExecutionException(java.util.concurrent.ExecutionException)

Example 2 with NodesHotThreadsRequestBuilder

use of org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsRequestBuilder in project elasticsearch by elastic.

the class HotThreadsIT method testIgnoreIdleThreads.

public void testIgnoreIdleThreads() throws ExecutionException, InterruptedException {
    assumeTrue("no support for hot_threads on FreeBSD", Constants.FREE_BSD == false);
    // First time, don't ignore idle threads:
    NodesHotThreadsRequestBuilder builder = client().admin().cluster().prepareNodesHotThreads();
    builder.setIgnoreIdleThreads(false);
    builder.setThreads(Integer.MAX_VALUE);
    NodesHotThreadsResponse response = builder.execute().get();
    int totSizeAll = 0;
    for (NodeHotThreads node : response.getNodesMap().values()) {
        totSizeAll += node.getHotThreads().length();
    }
    // Second time, do ignore idle threads:
    builder = client().admin().cluster().prepareNodesHotThreads();
    builder.setThreads(Integer.MAX_VALUE);
    // Make sure default is true:
    assertEquals(true, builder.request().ignoreIdleThreads());
    response = builder.execute().get();
    int totSizeIgnoreIdle = 0;
    for (NodeHotThreads node : response.getNodesMap().values()) {
        totSizeIgnoreIdle += node.getHotThreads().length();
    }
    // The filtered stacks should be smaller than unfiltered ones:
    assertThat(totSizeIgnoreIdle, lessThan(totSizeAll));
}
Also used : NodesHotThreadsRequestBuilder(org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsRequestBuilder) NodeHotThreads(org.elasticsearch.action.admin.cluster.node.hotthreads.NodeHotThreads) NodesHotThreadsResponse(org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsResponse)

Aggregations

NodeHotThreads (org.elasticsearch.action.admin.cluster.node.hotthreads.NodeHotThreads)2 NodesHotThreadsRequestBuilder (org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsRequestBuilder)2 NodesHotThreadsResponse (org.elasticsearch.action.admin.cluster.node.hotthreads.NodesHotThreadsResponse)2 Map (java.util.Map)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 ExecutionException (java.util.concurrent.ExecutionException)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 TimeValue (org.elasticsearch.common.unit.TimeValue)1