[
https://issues.apache.org/jira/browse/CASSANDRA-13963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16209191#comment-16209191
]
Andrés de la Peña commented on CASSANDRA-13963:
-----------------------------------------------
[Here|https://github.com/apache/cassandra/compare/trunk...adelapena:13963-trunk]
is a patch solving the problem.
It seems that the call to [{{TestingIndex.shouldFailCreate =
false;}}|https://github.com/apache/cassandra/blob/trunk/test/unit/org/apache/cassandra/index/SecondaryIndexManagerTest.java#L466]
is done right after creating the index configured to fail, without waiting for
the finalization of the build task. If we are not lucky the index initalization
task can start after disabling the configured fail. In such case, the two calls
to {{assertFalse(cfs.indexManager.isIndexQueryable(index))}} can either succeed
because the index build task hasn't started yet (not because it has failed), or
fail because the task has successfully finished without the configured
initialization task failure.
The unit tests usually use
[{{CQLTester.waitForIndex}}|https://github.com/apache/cassandra/blob/trunk/test/unit/org/apache/cassandra/cql3/CQLTester.java#L709-L737]
method to wait for the finalization of index builds. In that case, since we
are making the initialization to fail, we can't rely on this method, so the
patch adds a new
[{{CQLTester.waitForIndexBuilds}}|https://github.com/apache/cassandra/blob/trunk/test/unit/org/apache/cassandra/cql3/CQLTester.java#L709-L737]
method to wait for the finalization of index build tasks independently of
their results and the marking procedure. This method is in {{CQLTester}}
instead of {{SecondaryIndexManagerTest}} because I think it's suitable to be
used by other tests.
> SecondaryIndexManagerTest.indexWithfailedInitializationIsNotQueryableAfterPartialRebuild
> is flaky
> -------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-13963
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13963
> Project: Cassandra
> Issue Type: Bug
> Components: Secondary Indexes, Testing
> Reporter: Andrés de la Peña
> Assignee: Andrés de la Peña
> Priority: Minor
> Fix For: 4.x
>
>
> The unit test
> [SecondaryIndexManagerTest.indexWithfailedInitializationIsNotQueryableAfterPartialRebuild|https://github.com/apache/cassandra/blob/trunk/test/unit/org/apache/cassandra/index/SecondaryIndexManagerTest.java#L460-L476]
> is flaky. Apart from [the CI results showing a 3%
> flakiness|http://cassci.datastax.com/view/All_Jobs/job/trunk_utest/2430/testReport/org.apache.cassandra.index/SecondaryIndexManagerTest/indexWithfailedInitializationIsNotQueryableAfterPartialRebuild/],
> the test failure can be locally reproduced just running the test multiple
> times. In my case, it fails 2-5 times for each 1000 executions.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]