From 525ce40d1cf178cf396c0a2f1675531ee4d06125 Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Sat, 9 Apr 2016 20:57:42 -0400 Subject: [PATCH] Give SearchContext a toString and move the string capturing to capture time. --- .../search/internal/SearchContext.java | 12 +++++++++++ .../search/MockSearchService.java | 21 ++++--------------- .../search/MockSearchServiceTests.java | 2 +- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/search/internal/SearchContext.java b/core/src/main/java/org/elasticsearch/search/internal/SearchContext.java index 3c71d9e2599..105d5ed608d 100644 --- a/core/src/main/java/org/elasticsearch/search/internal/SearchContext.java +++ b/core/src/main/java/org/elasticsearch/search/internal/SearchContext.java @@ -403,4 +403,16 @@ public abstract class SearchContext implements Releasable { public abstract QueryShardContext getQueryShardContext(); + @Override + public String toString() { + StringBuilder result = new StringBuilder().append(shardTarget()); + if (searchType() != SearchType.DEFAULT) { + result.append("searchType=[").append(searchType()).append("]"); + } + if (scrollContext() != null) { + result.append("scroll=[").append(scrollContext().scroll.keepAlive()).append("]"); + } + result.append(" query=[").append(query()).append("]"); + return result.toString(); + } } diff --git a/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java b/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java index d99d3ffb155..2519606af3b 100644 --- a/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java +++ b/test/framework/src/main/java/org/elasticsearch/search/MockSearchService.java @@ -19,7 +19,6 @@ package org.elasticsearch.search; -import org.elasticsearch.action.search.SearchType; import org.elasticsearch.cache.recycler.PageCacheRecycler; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.inject.Inject; @@ -62,22 +61,10 @@ public class MockSearchService extends SearchService { public static void assertNoInFlightContext() { final Map copy = new HashMap<>(ACTIVE_SEARCH_CONTEXTS); if (copy.isEmpty() == false) { - Map.Entry firstOpen = copy.entrySet().iterator().next(); - SearchContext context = firstOpen.getKey(); - StringBuilder message = new StringBuilder().append(context.shardTarget()); - if (context.searchType() != SearchType.DEFAULT) { - message.append("searchType=[").append(context.searchType()).append("]"); - } - if (context.scrollContext() != null) { - message.append("scroll=[").append(context.scrollContext().scroll.keepAlive()).append("]"); - } - message.append(" query=[").append(context.query()).append("]"); - RuntimeException cause = new RuntimeException(message.toString()); - cause.setStackTrace(firstOpen.getValue().getStackTrace()); throw new AssertionError( - "There are still " + copy.size() - + " in-flight contexts. The first one's creation site is listed as the cause of this exception.", - cause); + "There are still [" + copy.size() + + "] in-flight contexts. The first one's creation site is listed as the cause of this exception.", + copy.values().iterator().next()); } } @@ -85,7 +72,7 @@ public class MockSearchService extends SearchService { * Add an active search context to the list of tracked contexts. Package private for testing. */ static void addActiveContext(SearchContext context) { - ACTIVE_SEARCH_CONTEXTS.put(context, new RuntimeException()); + ACTIVE_SEARCH_CONTEXTS.put(context, new RuntimeException(context.toString())); } /** diff --git a/test/framework/src/test/java/org/elasticsearch/search/MockSearchServiceTests.java b/test/framework/src/test/java/org/elasticsearch/search/MockSearchServiceTests.java index ec45c01eca5..7436472f13b 100644 --- a/test/framework/src/test/java/org/elasticsearch/search/MockSearchServiceTests.java +++ b/test/framework/src/test/java/org/elasticsearch/search/MockSearchServiceTests.java @@ -53,7 +53,7 @@ public class MockSearchServiceTests extends ESTestCase { MockSearchService.addActiveContext(s); try { Throwable e = expectThrows(AssertionError.class, () -> MockSearchService.assertNoInFlightContext()); - assertEquals("There are still 1 in-flight contexts. The first one's creation site is listed as the cause of this exception.", + assertEquals("There are still [1] in-flight contexts. The first one's creation site is listed as the cause of this exception.", e.getMessage()); e = e.getCause(); // The next line with throw an exception if the date looks wrong