cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrés de la Peña (JIRA) <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-13963) SecondaryIndexManagerTest.indexWithfailedInitializationIsNotQueryableAfterPartialRebuild is flaky
Date Wed, 18 Oct 2017 11:49:00 GMT

    [ 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: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message