TEST: add log testDoNotRenewSyncedFlushWhenAllSealed
This test was failed recently. This commit enables debug log and prints out seals. https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+master+multijob-unix-compatibility/os=oraclelinux/2234/console https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+6.x+intake/1437/console
This commit is contained in:
parent
a3e5773522
commit
9bc167466f
|
@ -46,6 +46,7 @@ import org.elasticsearch.index.shard.IndexShardTestCase;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.test.ESIntegTestCase;
|
import org.elasticsearch.test.ESIntegTestCase;
|
||||||
|
import org.elasticsearch.test.junit.annotations.TestLogging;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -244,6 +245,12 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
assertThat(indexResult.getFailure(), nullValue());
|
assertThat(indexResult.getFailure(), nullValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String syncedFlushDescription(ShardsSyncedFlushResult result) {
|
||||||
|
return result.shardResponses().entrySet().stream()
|
||||||
|
.map(e -> "Shard [" + e.getKey() + "], result [" + e.getValue() + "]")
|
||||||
|
.collect(Collectors.joining(","));
|
||||||
|
}
|
||||||
|
|
||||||
public void testSyncedFlushSkipOutOfSyncReplicas() throws Exception {
|
public void testSyncedFlushSkipOutOfSyncReplicas() throws Exception {
|
||||||
internalCluster().ensureAtLeastNumDataNodes(between(2, 3));
|
internalCluster().ensureAtLeastNumDataNodes(between(2, 3));
|
||||||
final int numberOfReplicas = internalCluster().numDataNodes() - 1;
|
final int numberOfReplicas = internalCluster().numDataNodes() - 1;
|
||||||
|
@ -269,6 +276,7 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
indexDoc(IndexShardTestCase.getEngine(outOfSyncReplica), "extra_" + i);
|
indexDoc(IndexShardTestCase.getEngine(outOfSyncReplica), "extra_" + i);
|
||||||
}
|
}
|
||||||
final ShardsSyncedFlushResult partialResult = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
final ShardsSyncedFlushResult partialResult = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
||||||
|
logger.info("Partial seal: {}", syncedFlushDescription(partialResult));
|
||||||
assertThat(partialResult.totalShards(), equalTo(numberOfReplicas + 1));
|
assertThat(partialResult.totalShards(), equalTo(numberOfReplicas + 1));
|
||||||
assertThat(partialResult.successfulShards(), equalTo(numberOfReplicas));
|
assertThat(partialResult.successfulShards(), equalTo(numberOfReplicas));
|
||||||
assertThat(partialResult.shardResponses().get(outOfSyncReplica.routingEntry()).failureReason, equalTo(
|
assertThat(partialResult.shardResponses().get(outOfSyncReplica.routingEntry()).failureReason, equalTo(
|
||||||
|
@ -284,6 +292,7 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
assertThat(fullResult.successfulShards(), equalTo(numberOfReplicas + 1));
|
assertThat(fullResult.successfulShards(), equalTo(numberOfReplicas + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestLogging("_root:DEBUG")
|
||||||
public void testDoNotRenewSyncedFlushWhenAllSealed() throws Exception {
|
public void testDoNotRenewSyncedFlushWhenAllSealed() throws Exception {
|
||||||
internalCluster().ensureAtLeastNumDataNodes(between(2, 3));
|
internalCluster().ensureAtLeastNumDataNodes(between(2, 3));
|
||||||
final int numberOfReplicas = internalCluster().numDataNodes() - 1;
|
final int numberOfReplicas = internalCluster().numDataNodes() - 1;
|
||||||
|
@ -300,9 +309,11 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
index("test", "doc", Integer.toString(i));
|
index("test", "doc", Integer.toString(i));
|
||||||
}
|
}
|
||||||
final ShardsSyncedFlushResult firstSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
final ShardsSyncedFlushResult firstSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
||||||
|
logger.info("First seal: {}", syncedFlushDescription(firstSeal));
|
||||||
assertThat(firstSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
assertThat(firstSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
||||||
// Do not renew synced-flush
|
// Do not renew synced-flush
|
||||||
final ShardsSyncedFlushResult secondSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
final ShardsSyncedFlushResult secondSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
||||||
|
logger.info("Second seal: {}", syncedFlushDescription(secondSeal));
|
||||||
assertThat(secondSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
assertThat(secondSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
||||||
assertThat(secondSeal.syncId(), equalTo(firstSeal.syncId()));
|
assertThat(secondSeal.syncId(), equalTo(firstSeal.syncId()));
|
||||||
// Shards were updated, renew synced flush.
|
// Shards were updated, renew synced flush.
|
||||||
|
@ -311,6 +322,7 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
index("test", "doc", Integer.toString(i));
|
index("test", "doc", Integer.toString(i));
|
||||||
}
|
}
|
||||||
final ShardsSyncedFlushResult thirdSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
final ShardsSyncedFlushResult thirdSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
||||||
|
logger.info("Third seal: {}", syncedFlushDescription(thirdSeal));
|
||||||
assertThat(thirdSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
assertThat(thirdSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
||||||
assertThat(thirdSeal.syncId(), not(equalTo(firstSeal.syncId())));
|
assertThat(thirdSeal.syncId(), not(equalTo(firstSeal.syncId())));
|
||||||
// Manually remove or change sync-id, renew synced flush.
|
// Manually remove or change sync-id, renew synced flush.
|
||||||
|
@ -326,6 +338,7 @@ public class FlushIT extends ESIntegTestCase {
|
||||||
assertThat(shard.commitStats().syncId(), nullValue());
|
assertThat(shard.commitStats().syncId(), nullValue());
|
||||||
}
|
}
|
||||||
final ShardsSyncedFlushResult forthSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
final ShardsSyncedFlushResult forthSeal = SyncedFlushUtil.attemptSyncedFlush(internalCluster(), shardId);
|
||||||
|
logger.info("Forth seal: {}", syncedFlushDescription(forthSeal));
|
||||||
assertThat(forthSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
assertThat(forthSeal.successfulShards(), equalTo(numberOfReplicas + 1));
|
||||||
assertThat(forthSeal.syncId(), not(equalTo(thirdSeal.syncId())));
|
assertThat(forthSeal.syncId(), not(equalTo(thirdSeal.syncId())));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue