Search in sources :

Example 11 with SimpleQueryResult

use of org.apache.cassandra.distributed.api.SimpleQueryResult in project cassandra by apache.

the class HostReplacementOfDownedClusterTest method hostReplacementOfDeadNodeAndOtherNodeStartsAfter.

/**
 * Cluster stops completely, then start seed, then host replace node2; after all complete start node3 to make sure
 * it comes up correctly with the new host in the ring.
 */
@Test
public void hostReplacementOfDeadNodeAndOtherNodeStartsAfter() throws IOException {
    // start with 3 nodes, stop both nodes, start the seed, host replace the down node)
    int numStartNodes = 3;
    TokenSupplier even = TokenSupplier.evenlyDistributedTokens(numStartNodes);
    try (Cluster cluster = Cluster.build(numStartNodes).withConfig(c -> c.with(Feature.GOSSIP, Feature.NETWORK)).withTokenSupplier(node -> even.token(node == (numStartNodes + 1) ? 2 : node)).start()) {
        IInvokableInstance seed = cluster.get(1);
        IInvokableInstance nodeToRemove = cluster.get(2);
        IInvokableInstance nodeToStartAfterReplace = cluster.get(3);
        InetSocketAddress addressToReplace = nodeToRemove.broadcastAddress();
        setupCluster(cluster);
        // collect rows/tokens to detect issues later on if the state doesn't match
        SimpleQueryResult expectedState = nodeToRemove.coordinator().executeWithResult("SELECT * FROM " + KEYSPACE + ".tbl", ConsistencyLevel.ALL);
        List<String> beforeCrashTokens = getTokenMetadataTokens(seed);
        // now stop all nodes
        stopAll(cluster);
        // with all nodes down, now start the seed (should be first node)
        seed.startup();
        // at this point node2 should be known in gossip, but with generation/version of 0
        assertGossipInfo(seed, addressToReplace, 0, -1);
        // make sure node1 still has node2's tokens
        List<String> currentTokens = getTokenMetadataTokens(seed);
        Assertions.assertThat(currentTokens).as("Tokens no longer match after restarting").isEqualTo(beforeCrashTokens);
        // now create a new node to replace the other node
        IInvokableInstance replacingNode = replaceHostAndStart(cluster, nodeToRemove);
        // wait till the replacing node is in the ring
        awaitRingJoin(seed, replacingNode);
        awaitRingJoin(replacingNode, seed);
        // we see that the replaced node is properly in the ring, now lets add the other node back
        nodeToStartAfterReplace.startup();
        awaitRingJoin(seed, nodeToStartAfterReplace);
        awaitRingJoin(replacingNode, nodeToStartAfterReplace);
        // make sure all nodes are healthy
        awaitRingHealthy(seed);
        assertRingIs(seed, seed, replacingNode, nodeToStartAfterReplace);
        assertRingIs(replacingNode, seed, replacingNode, nodeToStartAfterReplace);
        logger.info("Current ring is {}", assertRingIs(nodeToStartAfterReplace, seed, replacingNode, nodeToStartAfterReplace));
        validateRows(seed.coordinator(), expectedState);
        validateRows(replacingNode.coordinator(), expectedState);
    }
}
Also used : HostReplacementTest.setupCluster(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.setupCluster) ClusterUtils.getTokenMetadataTokens(org.apache.cassandra.distributed.shared.ClusterUtils.getTokenMetadataTokens) LoggerFactory(org.slf4j.LoggerFactory) ClusterUtils.stopAll(org.apache.cassandra.distributed.shared.ClusterUtils.stopAll) TokenSupplier(org.apache.cassandra.distributed.api.TokenSupplier) ClusterUtils.replaceHostAndStart(org.apache.cassandra.distributed.shared.ClusterUtils.replaceHostAndStart) TestBaseImpl(org.apache.cassandra.distributed.test.TestBaseImpl) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) Assertions(org.assertj.core.api.Assertions) Feature(org.apache.cassandra.distributed.api.Feature) Logger(org.slf4j.Logger) GOSSIPER_QUARANTINE_DELAY(org.apache.cassandra.config.CassandraRelevantProperties.GOSSIPER_QUARANTINE_DELAY) ClusterUtils.awaitRingJoin(org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingJoin) HostReplacementTest.validateRows(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.validateRows) IOException(java.io.IOException) Test(org.junit.Test) ConsistencyLevel(org.apache.cassandra.distributed.api.ConsistencyLevel) InetSocketAddress(java.net.InetSocketAddress) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) ClusterUtils.assertNotInRing(org.apache.cassandra.distributed.shared.ClusterUtils.assertNotInRing) Cluster(org.apache.cassandra.distributed.Cluster) ClusterUtils.assertGossipInfo(org.apache.cassandra.distributed.shared.ClusterUtils.assertGossipInfo) ClusterUtils.assertRingIs(org.apache.cassandra.distributed.shared.ClusterUtils.assertRingIs) ClusterUtils.awaitRingHealthy(org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingHealthy) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) TokenSupplier(org.apache.cassandra.distributed.api.TokenSupplier) InetSocketAddress(java.net.InetSocketAddress) HostReplacementTest.setupCluster(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.setupCluster) Cluster(org.apache.cassandra.distributed.Cluster) Test(org.junit.Test)

Example 12 with SimpleQueryResult

use of org.apache.cassandra.distributed.api.SimpleQueryResult in project cassandra by apache.

the class HostReplacementOfDownedClusterTest method hostReplacementOfDeadNode.

/**
 * When the full cluster crashes, make sure that we can replace a dead node after recovery.  This can happen
 * with DC outages (assuming single DC setup) where the recovery isn't able to recover a specific node.
 */
@Test
public void hostReplacementOfDeadNode() throws IOException {
    // start with 2 nodes, stop both nodes, start the seed, host replace the down node)
    TokenSupplier even = TokenSupplier.evenlyDistributedTokens(2);
    try (Cluster cluster = Cluster.build(2).withConfig(c -> c.with(Feature.GOSSIP, Feature.NETWORK)).withTokenSupplier(node -> even.token(node == 3 ? 2 : node)).start()) {
        IInvokableInstance seed = cluster.get(1);
        IInvokableInstance nodeToRemove = cluster.get(2);
        InetSocketAddress addressToReplace = nodeToRemove.broadcastAddress();
        setupCluster(cluster);
        // collect rows/tokens to detect issues later on if the state doesn't match
        SimpleQueryResult expectedState = nodeToRemove.coordinator().executeWithResult("SELECT * FROM " + KEYSPACE + ".tbl", ConsistencyLevel.ALL);
        List<String> beforeCrashTokens = getTokenMetadataTokens(seed);
        // now stop all nodes
        stopAll(cluster);
        // with all nodes down, now start the seed (should be first node)
        seed.startup();
        // at this point node2 should be known in gossip, but with generation/version of 0
        assertGossipInfo(seed, addressToReplace, 0, -1);
        // make sure node1 still has node2's tokens
        List<String> currentTokens = getTokenMetadataTokens(seed);
        Assertions.assertThat(currentTokens).as("Tokens no longer match after restarting").isEqualTo(beforeCrashTokens);
        // now create a new node to replace the other node
        IInvokableInstance replacingNode = replaceHostAndStart(cluster, nodeToRemove);
        awaitRingJoin(seed, replacingNode);
        awaitRingJoin(replacingNode, seed);
        assertNotInRing(seed, nodeToRemove);
        logger.info("Current ring is {}", assertNotInRing(replacingNode, nodeToRemove));
        validateRows(seed.coordinator(), expectedState);
        validateRows(replacingNode.coordinator(), expectedState);
    }
}
Also used : HostReplacementTest.setupCluster(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.setupCluster) ClusterUtils.getTokenMetadataTokens(org.apache.cassandra.distributed.shared.ClusterUtils.getTokenMetadataTokens) LoggerFactory(org.slf4j.LoggerFactory) ClusterUtils.stopAll(org.apache.cassandra.distributed.shared.ClusterUtils.stopAll) TokenSupplier(org.apache.cassandra.distributed.api.TokenSupplier) ClusterUtils.replaceHostAndStart(org.apache.cassandra.distributed.shared.ClusterUtils.replaceHostAndStart) TestBaseImpl(org.apache.cassandra.distributed.test.TestBaseImpl) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) Assertions(org.assertj.core.api.Assertions) Feature(org.apache.cassandra.distributed.api.Feature) Logger(org.slf4j.Logger) GOSSIPER_QUARANTINE_DELAY(org.apache.cassandra.config.CassandraRelevantProperties.GOSSIPER_QUARANTINE_DELAY) ClusterUtils.awaitRingJoin(org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingJoin) HostReplacementTest.validateRows(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.validateRows) IOException(java.io.IOException) Test(org.junit.Test) ConsistencyLevel(org.apache.cassandra.distributed.api.ConsistencyLevel) InetSocketAddress(java.net.InetSocketAddress) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) ClusterUtils.assertNotInRing(org.apache.cassandra.distributed.shared.ClusterUtils.assertNotInRing) Cluster(org.apache.cassandra.distributed.Cluster) ClusterUtils.assertGossipInfo(org.apache.cassandra.distributed.shared.ClusterUtils.assertGossipInfo) ClusterUtils.assertRingIs(org.apache.cassandra.distributed.shared.ClusterUtils.assertRingIs) ClusterUtils.awaitRingHealthy(org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingHealthy) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) TokenSupplier(org.apache.cassandra.distributed.api.TokenSupplier) InetSocketAddress(java.net.InetSocketAddress) HostReplacementTest.setupCluster(org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.setupCluster) Cluster(org.apache.cassandra.distributed.Cluster) Test(org.junit.Test)

Example 13 with SimpleQueryResult

use of org.apache.cassandra.distributed.api.SimpleQueryResult in project cassandra by apache.

the class AbstractClientSizeWarning method failThreshold.

public void failThreshold(String cql) throws UnknownHostException {
    ICoordinator node = CLUSTER.coordinator(1);
    for (int i = 0; i < failThresholdRowCount(); i++) node.execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (1, ?, ?)", ConsistencyLevel.ALL, i + 1, bytes(512));
    if (shouldFlush())
        CLUSTER.stream().forEach(i -> i.flush(KEYSPACE));
    enable(true);
    checkpointHistogram();
    List<String> warnings = CLUSTER.get(1).callsOnInstance(() -> {
        ClientWarn.instance.captureWarnings();
        CoordinatorWarnings.init();
        try {
            QueryProcessor.execute(cql, org.apache.cassandra.db.ConsistencyLevel.ALL, QueryState.forInternalCalls());
            Assert.fail("Expected query failure");
        } catch (ReadSizeAbortException e) {
        // expected, client transport returns an error message and includes client warnings
        }
        CoordinatorWarnings.done();
        CoordinatorWarnings.reset();
        return ClientWarn.instance.getWarnings();
    }).call();
    assertAbortWarnings(warnings);
    assertHistogramUpdated();
    assertWarnAborts(0, 1, 1);
    try {
        driverQueryAll(cql);
        Assert.fail("Query should have thrown ReadFailureException");
    } catch (com.datastax.driver.core.exceptions.ReadFailureException e) {
        // without changing the client can't produce a better message...
        // client does NOT include the message sent from the server in the exception; so the message doesn't work
        // well in this case
        assertThat(e.getMessage()).contains("responses were required but only 0 replica responded");
        ImmutableSet<InetAddress> expectedKeys = ImmutableSet.of(InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 }), InetAddress.getByAddress(new byte[] { 127, 0, 0, 2 }), InetAddress.getByAddress(new byte[] { 127, 0, 0, 3 }));
        assertThat(e.getFailuresMap()).hasSizeBetween(1, 3).containsValue(RequestFailureReason.READ_SIZE.code).hasKeySatisfying(new Condition<InetAddress>() {

            public boolean matches(InetAddress value) {
                return expectedKeys.contains(value);
            }
        });
    }
    assertHistogramUpdated();
    assertWarnAborts(0, 2, 1);
    // query should no longer fail
    enable(false);
    SimpleQueryResult result = node.executeWithResult(cql, ConsistencyLevel.ALL);
    assertThat(result.warnings()).isEmpty();
    assertHistogramNotUpdated();
    assertThat(driverQueryAll(cql).getExecutionInfo().getWarnings()).isEmpty();
    assertHistogramNotUpdated();
    assertWarnAborts(0, 2, 0);
}
Also used : Arrays(java.util.Arrays) SimpleStatement(com.datastax.driver.core.SimpleStatement) BeforeClass(org.junit.BeforeClass) ClientWarn(org.apache.cassandra.service.ClientWarn) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Random(java.util.Random) JavaDriverUtils(org.apache.cassandra.distributed.test.JavaDriverUtils) QueryProcessor(org.apache.cassandra.cql3.QueryProcessor) ByteBuffer(java.nio.ByteBuffer) InetAddress(java.net.InetAddress) ResultSet(com.datastax.driver.core.ResultSet) ICoordinator(org.apache.cassandra.distributed.api.ICoordinator) TestBaseImpl(org.apache.cassandra.distributed.test.TestBaseImpl) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) DatabaseDescriptor(org.apache.cassandra.config.DatabaseDescriptor) Before(org.junit.Before) Feature(org.apache.cassandra.distributed.api.Feature) CoordinatorWarnings(org.apache.cassandra.service.reads.trackwarnings.CoordinatorWarnings) ImmutableSet(com.google.common.collect.ImmutableSet) QueryState(org.apache.cassandra.service.QueryState) ReadSizeAbortException(org.apache.cassandra.exceptions.ReadSizeAbortException) ICluster(org.apache.cassandra.distributed.api.ICluster) IOException(java.io.IOException) Test(org.junit.Test) ConsistencyLevel(org.apache.cassandra.distributed.api.ConsistencyLevel) RequestFailureReason(org.apache.cassandra.exceptions.RequestFailureReason) UnknownHostException(java.net.UnknownHostException) Consumer(java.util.function.Consumer) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) Condition(org.assertj.core.api.Condition) Cluster(org.apache.cassandra.distributed.Cluster) Assert(org.junit.Assert) Collections(java.util.Collections) Condition(org.assertj.core.api.Condition) ICoordinator(org.apache.cassandra.distributed.api.ICoordinator) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) ReadSizeAbortException(org.apache.cassandra.exceptions.ReadSizeAbortException) ImmutableSet(com.google.common.collect.ImmutableSet) InetAddress(java.net.InetAddress)

Example 14 with SimpleQueryResult

use of org.apache.cassandra.distributed.api.SimpleQueryResult in project cassandra by apache.

the class AbstractClientSizeWarning method warnThreshold.

public void warnThreshold(String cql, boolean triggerReadRepair) {
    for (int i = 0; i < warnThresholdRowCount(); i++) {
        if (triggerReadRepair) {
            int finalI = i;
            // cell timestamps will not match (even though the values match) which will trigger a read-repair
            CLUSTER.stream().forEach(node -> node.executeInternal("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (1, ?, ?)", finalI + 1, bytes(512)));
        } else {
            CLUSTER.coordinator(1).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (1, ?, ?)", ConsistencyLevel.ALL, i + 1, bytes(512));
        }
    }
    if (shouldFlush())
        CLUSTER.stream().forEach(i -> i.flush(KEYSPACE));
    enable(true);
    checkpointHistogram();
    SimpleQueryResult result = CLUSTER.coordinator(1).executeWithResult(cql, ConsistencyLevel.ALL);
    assertWarnings(result.warnings());
    assertHistogramUpdated();
    assertWarnAborts(1, 0, 0);
    assertWarnings(driverQueryAll(cql).getExecutionInfo().getWarnings());
    assertHistogramUpdated();
    assertWarnAborts(2, 0, 0);
    enable(false);
    result = CLUSTER.coordinator(1).executeWithResult(cql, ConsistencyLevel.ALL);
    assertThat(result.warnings()).isEmpty();
    assertHistogramNotUpdated();
    assertThat(driverQueryAll(cql).getExecutionInfo().getWarnings()).isEmpty();
    assertHistogramNotUpdated();
    assertWarnAborts(2, 0, 0);
}
Also used : Arrays(java.util.Arrays) SimpleStatement(com.datastax.driver.core.SimpleStatement) BeforeClass(org.junit.BeforeClass) ClientWarn(org.apache.cassandra.service.ClientWarn) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Random(java.util.Random) JavaDriverUtils(org.apache.cassandra.distributed.test.JavaDriverUtils) QueryProcessor(org.apache.cassandra.cql3.QueryProcessor) ByteBuffer(java.nio.ByteBuffer) InetAddress(java.net.InetAddress) ResultSet(com.datastax.driver.core.ResultSet) ICoordinator(org.apache.cassandra.distributed.api.ICoordinator) TestBaseImpl(org.apache.cassandra.distributed.test.TestBaseImpl) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) DatabaseDescriptor(org.apache.cassandra.config.DatabaseDescriptor) Before(org.junit.Before) Feature(org.apache.cassandra.distributed.api.Feature) CoordinatorWarnings(org.apache.cassandra.service.reads.trackwarnings.CoordinatorWarnings) ImmutableSet(com.google.common.collect.ImmutableSet) QueryState(org.apache.cassandra.service.QueryState) ReadSizeAbortException(org.apache.cassandra.exceptions.ReadSizeAbortException) ICluster(org.apache.cassandra.distributed.api.ICluster) IOException(java.io.IOException) Test(org.junit.Test) ConsistencyLevel(org.apache.cassandra.distributed.api.ConsistencyLevel) RequestFailureReason(org.apache.cassandra.exceptions.RequestFailureReason) UnknownHostException(java.net.UnknownHostException) Consumer(java.util.function.Consumer) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) Condition(org.assertj.core.api.Condition) Cluster(org.apache.cassandra.distributed.Cluster) Assert(org.junit.Assert) Collections(java.util.Collections) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult)

Example 15 with SimpleQueryResult

use of org.apache.cassandra.distributed.api.SimpleQueryResult in project cassandra by apache.

the class TombstoneCountWarningTest method warnThreshold.

private void warnThreshold(String cql, boolean isScan) {
    for (int i = 0; i < TOMBSTONE_WARN + 1; i++) CLUSTER.coordinator(1).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (1, ?, null)", ConsistencyLevel.ALL, i);
    enable(true);
    Consumer<List<String>> testEnabled = warnings -> Assertions.assertThat(Iterables.getOnlyElement(warnings)).contains("nodes scanned up to " + (TOMBSTONE_WARN + 1) + " tombstones and issued tombstone warnings for query " + cql);
    SimpleQueryResult result = CLUSTER.coordinator(1).executeWithResult(cql, ConsistencyLevel.ALL);
    testEnabled.accept(result.warnings());
    assertWarnAborts(1, 0, 0);
    testEnabled.accept(driverQueryAll(cql).getExecutionInfo().getWarnings());
    assertWarnAborts(2, 0, 0);
    enable(false);
    Consumer<List<String>> testDisabled = warnings -> {
        // client warnings are currently coordinator only, so if present only 1 is expected
        if (isScan) {
            // Scans perform multiple ReadCommands, which will not propgate the warnings to the top-level coordinator; so no warnings are expected
            Assertions.assertThat(warnings).isEmpty();
        } else {
            Assertions.assertThat(Iterables.getOnlyElement(warnings)).startsWith("Read " + (TOMBSTONE_WARN + 1) + " live rows and " + (TOMBSTONE_WARN + 1) + " tombstone cells for query " + cql);
        }
    };
    result = CLUSTER.coordinator(1).executeWithResult(cql, ConsistencyLevel.ALL);
    testDisabled.accept(result.warnings());
    assertWarnAborts(2, 0, 0);
    testDisabled.accept(driverQueryAll(cql).getExecutionInfo().getWarnings());
    assertWarnAborts(2, 0, 0);
}
Also used : TombstoneAbortException(org.apache.cassandra.exceptions.TombstoneAbortException) Arrays(java.util.Arrays) Iterables(com.google.common.collect.Iterables) SimpleStatement(com.datastax.driver.core.SimpleStatement) BeforeClass(org.junit.BeforeClass) ClientWarn(org.apache.cassandra.service.ClientWarn) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) JavaDriverUtils(org.apache.cassandra.distributed.test.JavaDriverUtils) QueryProcessor(org.apache.cassandra.cql3.QueryProcessor) InetAddress(java.net.InetAddress) ResultSet(com.datastax.driver.core.ResultSet) TestBaseImpl(org.apache.cassandra.distributed.test.TestBaseImpl) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) Assertions(org.assertj.core.api.Assertions) DatabaseDescriptor(org.apache.cassandra.config.DatabaseDescriptor) Before(org.junit.Before) AfterClass(org.junit.AfterClass) Feature(org.apache.cassandra.distributed.api.Feature) CoordinatorWarnings(org.apache.cassandra.service.reads.trackwarnings.CoordinatorWarnings) ImmutableSet(com.google.common.collect.ImmutableSet) QueryState(org.apache.cassandra.service.QueryState) ReadFailureException(org.apache.cassandra.exceptions.ReadFailureException) ICluster(org.apache.cassandra.distributed.api.ICluster) IOException(java.io.IOException) Test(org.junit.Test) ConsistencyLevel(org.apache.cassandra.distributed.api.ConsistencyLevel) RequestFailureReason(org.apache.cassandra.exceptions.RequestFailureReason) UnknownHostException(java.net.UnknownHostException) Consumer(java.util.function.Consumer) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) Condition(org.assertj.core.api.Condition) Cluster(org.apache.cassandra.distributed.Cluster) Assert(org.junit.Assert) Collections(java.util.Collections) SimpleQueryResult(org.apache.cassandra.distributed.api.SimpleQueryResult) List(java.util.List)

Aggregations

SimpleQueryResult (org.apache.cassandra.distributed.api.SimpleQueryResult)16 Cluster (org.apache.cassandra.distributed.Cluster)13 IInvokableInstance (org.apache.cassandra.distributed.api.IInvokableInstance)13 Test (org.junit.Test)13 IOException (java.io.IOException)12 List (java.util.List)12 ConsistencyLevel (org.apache.cassandra.distributed.api.ConsistencyLevel)12 Feature (org.apache.cassandra.distributed.api.Feature)12 TestBaseImpl (org.apache.cassandra.distributed.test.TestBaseImpl)12 Arrays (java.util.Arrays)10 Assertions (org.assertj.core.api.Assertions)8 TokenSupplier (org.apache.cassandra.distributed.api.TokenSupplier)6 ClusterUtils.assertRingIs (org.apache.cassandra.distributed.shared.ClusterUtils.assertRingIs)6 ClusterUtils.awaitRingHealthy (org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingHealthy)6 ClusterUtils.awaitRingJoin (org.apache.cassandra.distributed.shared.ClusterUtils.awaitRingJoin)6 ClusterUtils.replaceHostAndStart (org.apache.cassandra.distributed.shared.ClusterUtils.replaceHostAndStart)6 Logger (org.slf4j.Logger)6 LoggerFactory (org.slf4j.LoggerFactory)6 ResultSet (com.datastax.driver.core.ResultSet)5 SimpleStatement (com.datastax.driver.core.SimpleStatement)5