diff --git a/test/distributed/org/apache/cassandra/distributed/test/cql3/MultiNodeTableWalkBase.java b/test/distributed/org/apache/cassandra/distributed/test/cql3/MultiNodeTableWalkBase.java index da4ac26cbc..d6c0183473 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/cql3/MultiNodeTableWalkBase.java +++ b/test/distributed/org/apache/cassandra/distributed/test/cql3/MultiNodeTableWalkBase.java @@ -92,27 +92,6 @@ public abstract class MultiNodeTableWalkBase extends SingleNodeTableWalkTest super(rs, cluster); } - @Override - public boolean allowNonPartitionQuery() - { - // This is disabled to make CI stable. There are known issues that are being fixed so have to exclude for now - return false; - } - - @Override - public boolean allowNonPartitionMultiColumnQuery() - { - // This is disabled to make CI stable. There are known issues that are being fixed so have to exclude for now - return false; - } - - @Override - public boolean allowPartitionQuery() - { - // This is disabled to make CI stable. There are known issues that are being fixed so have to exclude for now - return false; - } - @Override protected boolean isMultiNode() { diff --git a/test/distributed/org/apache/cassandra/distributed/test/cql3/StatefulASTBase.java b/test/distributed/org/apache/cassandra/distributed/test/cql3/StatefulASTBase.java index 83548ba834..3a23e1bfcc 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/cql3/StatefulASTBase.java +++ b/test/distributed/org/apache/cassandra/distributed/test/cql3/StatefulASTBase.java @@ -34,6 +34,7 @@ import java.util.stream.Stream; import javax.annotation.Nullable; import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.Maps; import org.slf4j.Logger; import accord.utils.Gen; @@ -46,6 +47,8 @@ import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import com.datastax.driver.core.SimpleStatement; import com.datastax.driver.core.SocketOptions; +import com.datastax.driver.core.exceptions.ReadFailureException; +import com.datastax.driver.core.exceptions.WriteFailureException; import org.apache.cassandra.config.CassandraRelevantProperties; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.KnownIssue; @@ -73,6 +76,7 @@ import org.apache.cassandra.distributed.api.IInstanceConfig; import org.apache.cassandra.distributed.api.IInvokableInstance; import org.apache.cassandra.distributed.test.JavaDriverUtils; import org.apache.cassandra.distributed.test.TestBaseImpl; +import org.apache.cassandra.exceptions.RequestFailureReason; import org.apache.cassandra.harry.model.ASTSingleTableModel; import org.apache.cassandra.harry.util.StringUtils; import org.apache.cassandra.schema.TableMetadata; @@ -496,11 +500,35 @@ public class StatefulASTBase extends TestBaseImpl .findAny() .get(); ss.setHost(host); - ResultSet result = session.execute(ss); + ResultSet result; + try + { + result = session.execute(ss); + } + catch (ReadFailureException t) + { + throw new AssertionError("failed from=" + Maps.transformValues(t.getFailuresMap(), BaseState::safeErrorCode), t); + } + catch (WriteFailureException t) + { + throw new AssertionError("failed from=" + Maps.transformValues(t.getFailuresMap(), BaseState::safeErrorCode), t); + } return getRowsAsByteBuffer(result); } } + private static String safeErrorCode(Integer code) + { + try + { + return RequestFailureReason.fromCode(code).name(); + } + catch (IllegalArgumentException e) + { + return "Unexpected code " + code + ": " + e.getMessage(); + } + } + @VisibleForTesting static ByteBuffer[][] getRowsAsByteBuffer(ResultSet result) { diff --git a/test/distributed/org/apache/cassandra/distributed/test/sai/SAIUtil.java b/test/distributed/org/apache/cassandra/distributed/test/sai/SAIUtil.java index 36c6e8445d..c00e5699ba 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/sai/SAIUtil.java +++ b/test/distributed/org/apache/cassandra/distributed/test/sai/SAIUtil.java @@ -29,7 +29,6 @@ import java.util.stream.Collectors; import org.apache.cassandra.distributed.Cluster; import org.apache.cassandra.distributed.api.Feature; import org.apache.cassandra.distributed.api.IInstance; -import org.apache.cassandra.distributed.api.IInvokableInstance; import org.apache.cassandra.distributed.api.SimpleQueryResult; import org.apache.cassandra.index.Index; import org.apache.cassandra.index.IndexStatusManager; @@ -86,23 +85,26 @@ public class SAIUtil */ private static void assertIndexesQueryable(Cluster cluster, String keyspace, final Iterable indexes) { - IInvokableInstance localNode = cluster.get(1); final List nodes = cluster.stream() .map(node -> nodeAddress(node.broadcastAddress())) .collect(Collectors.toList()); - localNode.runOnInstance(() -> { - for (String index : indexes) - { - for (InetAddressAndPort node : nodes) + for (var localNode : cluster) + { + if (localNode.isShutdown()) continue; + localNode.runOnInstance(() -> { + for (String index : indexes) { - Index.Status status = IndexStatusManager.instance.getIndexStatus(node, keyspace, index); - assert status == Index.Status.BUILD_SUCCEEDED + for (InetAddressAndPort node : nodes) + { + Index.Status status = IndexStatusManager.instance.getIndexStatus(node, keyspace, index); + assert status == Index.Status.BUILD_SUCCEEDED : "Index " + index + " not queryable on node " + node + " (status = " + status + ')'; + } } - } - }); + }); + } } private static InetAddressAndPort nodeAddress(InetSocketAddress address)