You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benjamin Lerer (Jira)" <ji...@apache.org> on 2021/03/01 11:21:00 UTC
[jira] [Commented] (CASSANDRA-16444) Fix flaky test
testMultiExpressionQueriesWhereRowSplitBetweenSSTables -
org.apache.cassandra.index.sasi.SASIIndexTest
[ https://issues.apache.org/jira/browse/CASSANDRA-16444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17292834#comment-17292834 ]
Benjamin Lerer commented on CASSANDRA-16444:
--------------------------------------------
Thanks for the patches and the deep analysis.
* I believe that even if it does not appear as a problem right now we should make the tests more robusts. 2 things that strike me are that the tables are not cleaned up between the tests and that {{forcedFlushes}} are used but the tests do not disable the automatic flushes.
I would change the {{cleanupData}} method into:
{code}
private static void cleanupData()
{
stores().forEach(ColumnFamilyStore::truncateBlocking);
}
private static Stream<ColumnFamilyStore> stores()
{
Keyspace ks = Keyspace.open(KS_NAME);
return ks.getMetadata().tables.stream().map(t -> ks.getColumnFamilyStore(t.name));
}
{code}
and the {{cleanUp}} method into:
{code}
@Before
public void cleanUp()
{
cleanupData();
}
{code}
That would ensure that we clean all the tables between the different tests.
I would also add {{stores().forEach(ColumnFamilyStore::disableAutoCompaction);}} at the end of the {{loadSchema()}} method to ensure that there are no race condition with automatic compactions.
* Regarding the timestamp fix, would it not make sense to use some thing like:
{code}
private static long timestamp = 0;
private static long nextTimestamp()
{
timestamp += 1000;
return timestamp;
}
{code}
rather than specifying the timestamp for each call to {{loadData}}?
* Regarding {{testIndexMemtableSwitching}} problem in 3.11, it seems that the test has been changed as part of CASSANDRA-15867 and I am not convinced that this change was the correct one. If you roll back that change, do you still see the same issue?
> Fix flaky test testMultiExpressionQueriesWhereRowSplitBetweenSSTables - org.apache.cassandra.index.sasi.SASIIndexTest
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-16444
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16444
> Project: Cassandra
> Issue Type: Bug
> Components: Test/unit
> Reporter: David Capwell
> Assignee: Alexandre Dutra
> Priority: Normal
> Fix For: 4.0-beta
>
>
> https://app.circleci.com/pipelines/github/dcapwell/cassandra/862/workflows/d2b10373-5bd1-4895-a738-1c28587cae62/jobs/5136
> {code}
> junit.framework.AssertionFailedError: []
> at org.apache.cassandra.index.sasi.SASIIndexTest.testMultiExpressionQueriesWhereRowSplitBetweenSSTables(SASIIndexTest.java:589)
> at org.apache.cassandra.index.sasi.SASIIndexTest.testMultiExpressionQueriesWhereRowSplitBetweenSSTables(SASIIndexTest.java:468)
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org