From 261e21a386975063a7838df5acbce4cb464ed58a Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Thu, 26 Feb 2015 21:13:39 +0100 Subject: [PATCH] [TEST] Fix NPE in ElasticsearchIntegrationTest if no indexer is provided Closes #9907 --- .../test/ElasticsearchIntegrationTest.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java index 374c9a5020dca..1d732e18a91ea 100644 --- a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java +++ b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java @@ -129,6 +129,7 @@ import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS; import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS; @@ -991,35 +992,37 @@ public long waitForDocs(final long numDocs, final @Nullable BackgroundIndexer in */ public long waitForDocs(final long numDocs, int maxWaitTime, TimeUnit maxWaitTimeUnit, final @Nullable BackgroundIndexer indexer) throws InterruptedException { - final long[] lastKnownCount = {-1}; + final AtomicLong lastKnownCount = new AtomicLong(-1); long lastStartCount = -1; Predicate testDocs = new Predicate() { @Override public boolean apply(Object o) { - lastKnownCount[0] = indexer.totalIndexedDocs(); - if (lastKnownCount[0] >= numDocs) { + if (indexer != null) { + lastKnownCount.set(indexer.totalIndexedDocs()); + } + if (lastKnownCount.get() >= numDocs) { long count = client().prepareCount().setQuery(matchAllQuery()).execute().actionGet().getCount(); - if (count == lastKnownCount[0]) { + if (count == lastKnownCount.get()) { // no progress - try to refresh for the next time client().admin().indices().prepareRefresh().get(); } - lastKnownCount[0] = count; - logger.debug("[{}] docs visible for search. waiting for [{}]", lastKnownCount[0], numDocs); + lastKnownCount.set(count); + logger.debug("[{}] docs visible for search. waiting for [{}]", lastKnownCount.get(), numDocs); } else { - logger.debug("[{}] docs indexed. waiting for [{}]", lastKnownCount[0], numDocs); + logger.debug("[{}] docs indexed. waiting for [{}]", lastKnownCount.get(), numDocs); } - return lastKnownCount[0] >= numDocs; + return lastKnownCount.get() >= numDocs; } }; while (!awaitBusy(testDocs, maxWaitTime, maxWaitTimeUnit)) { - if (lastStartCount == lastKnownCount[0]) { + if (lastStartCount == lastKnownCount.get()) { // we didn't make any progress fail("failed to reach " + numDocs + "docs"); } - lastStartCount = lastKnownCount[0]; + lastStartCount = lastKnownCount.get(); } - return lastKnownCount[0]; + return lastKnownCount.get(); }