This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch cassandra-6.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-6.0 by this push:
new bc6e4a2b63 Fix flaky test DropAccordTableTest
bc6e4a2b63 is described below
commit bc6e4a2b63652c4779ddcee77bb17186428fa2c1
Author: David Capwell <[email protected]>
AuthorDate: Wed May 27 13:28:05 2026 -0700
Fix flaky test DropAccordTableTest
patch by David Capwell; reviewed by Caleb Rackliffe for CASSANDRA-21397
---
.../apache/cassandra/utils/AbstractTypeGenerators.java | 11 +++++++++--
.../org/apache/cassandra/utils/CassandraGenerators.java | 17 ++++++++++++++++-
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/test/unit/org/apache/cassandra/utils/AbstractTypeGenerators.java
b/test/unit/org/apache/cassandra/utils/AbstractTypeGenerators.java
index 7ff9683d45..bde6482e91 100644
--- a/test/unit/org/apache/cassandra/utils/AbstractTypeGenerators.java
+++ b/test/unit/org/apache/cassandra/utils/AbstractTypeGenerators.java
@@ -828,16 +828,19 @@ public final class AbstractTypeGenerators
return userTypeGen(elementGen, sizeGen, ksGen, nameGen, BOOLEAN_GEN);
}
- private static ThreadLocal<String> OVERRIDE_KEYSPACE = new ThreadLocal<>();
+ private static final ThreadLocal<String> OVERRIDE_KEYSPACE = new
ThreadLocal<>();
+ private static final ThreadLocal<Set<String>> SEEN_UDT_NAMES = new
ThreadLocal<>();
public static void overrideUDTKeyspace(String ks)
{
OVERRIDE_KEYSPACE.set(ks);
+ SEEN_UDT_NAMES.set(new HashSet<>());
}
public static void clearUDTKeyspace()
{
OVERRIDE_KEYSPACE.remove();
+ SEEN_UDT_NAMES.remove();
}
public interface UserTypeFieldsGen
@@ -876,7 +879,11 @@ public final class AbstractTypeGenerators
String ks = OVERRIDE_KEYSPACE.get();
if (ks == null)
ks = ksGen.generate(rnd);
- String name = nameGen.generate(rnd);
+ Set<String> seenNames = SEEN_UDT_NAMES.get();
+ Gen<String> localNameGen = nameGen;
+ if (seenNames != null)
+ localNameGen = Generators.filter(nameGen, seenNames::add);
+ String name = localNameGen.generate(rnd);
ByteBuffer nameBB = AsciiType.instance.decompose(name);
for (int i = 0; i < numElements; i++)
diff --git a/test/unit/org/apache/cassandra/utils/CassandraGenerators.java
b/test/unit/org/apache/cassandra/utils/CassandraGenerators.java
index 651b85022a..e3d4017744 100644
--- a/test/unit/org/apache/cassandra/utils/CassandraGenerators.java
+++ b/test/unit/org/apache/cassandra/utils/CassandraGenerators.java
@@ -1750,6 +1750,7 @@ public final class CassandraGenerators
Set<UserType> udts = CassandraGenerators.extractUDTs(metadata);
if (!udts.isEmpty())
{
+ List<UserType> ordered = new ArrayList<>();
Deque<UserType> pending = new ArrayDeque<>(udts);
Set<ByteBuffer> visited = new HashSet<>();
while (!pending.isEmpty())
@@ -1759,8 +1760,22 @@ public final class CassandraGenerators
subTypes.remove(next); // it includes self
if (subTypes.isEmpty() || subTypes.stream().allMatch(t ->
visited.contains(t.name)))
{
- fn.accept(next);
+ try
+ {
+ fn.accept(next);
+ }
+ catch (Throwable t)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Unable to add type
").append(next.toCqlString(false, false, false));
+ sb.append("\nHistory:");
+ for (var udt : ordered)
+ sb.append("\n\t").append(udt.toCqlString(false,
false, false));
+ AssertionError e = new AssertionError(sb.toString(),
t);
+ throw e;
+ }
visited.add(next.name);
+ ordered.add(next);
}
else
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]