summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/index/refresh
diff options
context:
space:
mode:
authorNik Everett <nik9000@gmail.com>2016-12-23 15:51:09 -0500
committerNik Everett <nik9000@gmail.com>2017-01-06 20:03:32 -0500
commit12923ef8961f40abded8341f00881a163f7c68a9 (patch)
treef575d28d2d4c98dd4528aaf339514d7a7d3c7210 /core/src/test/java/org/elasticsearch/index/refresh
parentb0c009ae769877594ada8a2b05267463caebf274 (diff)
Close and flush refresh listeners on shard close
Right now closing a shard looks like it strands refresh listeners, causing tests like `delete/50_refresh/refresh=wait_for waits until changes are visible in search` to fail. Here is a build that fails: https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+multi_cluster_search+multijob-darwin-compatibility/4/console This attempts to fix the problem by implements `Closeable` on `RefreshListeners` and rejecting listeners when closed. More importantly the act of closing the instance flushes all pending listeners so we shouldn't have any stranded listeners on close. Because it was needed for testing, this also adds the number of pending listeners to the `CommonStats` object and all API to which that flows: `_cat/nodes`, `_cat/indices`, `_cat/shards`, and `_nodes/stats`.
Diffstat (limited to 'core/src/test/java/org/elasticsearch/index/refresh')
-rw-r--r--core/src/test/java/org/elasticsearch/index/refresh/RefreshStatsTests.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/index/refresh/RefreshStatsTests.java b/core/src/test/java/org/elasticsearch/index/refresh/RefreshStatsTests.java
new file mode 100644
index 0000000000..91ac42628e
--- /dev/null
+++ b/core/src/test/java/org/elasticsearch/index/refresh/RefreshStatsTests.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.elasticsearch.index.refresh;
+
+import org.elasticsearch.Version;
+import org.elasticsearch.test.AbstractStreamableTestCase;
+
+import java.io.IOException;
+
+public class RefreshStatsTests extends AbstractStreamableTestCase<RefreshStats> {
+ @Override
+ protected RefreshStats createTestInstance() {
+ return new RefreshStats(randomNonNegativeLong(), randomNonNegativeLong(), between(0, Integer.MAX_VALUE));
+ }
+
+ @Override
+ protected RefreshStats createBlankInstance() {
+ return new RefreshStats();
+ }
+
+ public void testPre5Dot2() throws IOException {
+ // We can drop the compatibility once the assertion just below this list fails
+ assertTrue(Version.CURRENT.minimumCompatibilityVersion().before(Version.V_5_2_0_UNRELEASED));
+
+ RefreshStats instance = createTestInstance();
+ RefreshStats copied = copyInstance(instance, Version.V_5_1_1_UNRELEASED);
+ assertEquals(instance.getTotal(), copied.getTotal());
+ assertEquals(instance.getTotalTimeInMillis(), copied.getTotalTimeInMillis());
+ assertEquals(0, copied.getListeners());
+ }
+}