You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Gianluca Righetto (Jira)" <ji...@apache.org> on 2020/05/07 13:51:00 UTC

[jira] [Commented] (CASSANDRA-15676) flaky test testWriteUnknownResult- org.apache.cassandra.distributed.test.CasWriteTest

    [ https://issues.apache.org/jira/browse/CASSANDRA-15676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17101697#comment-17101697 ] 

Gianluca Righetto commented on CASSANDRA-15676:
-----------------------------------------------

The current implementation of this test is non-deterministic, it executes two diverging compare-and-set statements in a while-true loop until it breaks QUORUM. The issue is it may throw a WriteTimeoutException before that happens, because the loop creates too many requests. At the time this ticket was opened, the timeout exception was masked due to a poor assert statement, but that specifically has been addressed already.

Another issue was that the generated PK for the INSERT statements was non-final in the test method, it was overwritten at every iteration of the loop, so multiple threads would see only the last assigned value of the PK, which contributed to the overhead.

I have re-written the test to make it deterministic. Now it will intercept the {{PAXOS_PROPOSE_RSP}} messages from the nodes back to the coordinator and replace them with failure responses, such that QUORUM is never reached and it will throw the expected {{CasWriteUnknownResultException}}. This way it removes the "chance" aspect, but still exercises the same code path (which is mostly testing o.a.c.s.StorageProxy::cas).

[PR|https://github.com/grighetto/cassandra/pull/2]

[JVM 11 Tests|https://app.circleci.com/pipelines/github/grighetto/cassandra/17/workflows/f9930861-5765-469f-970e-d4cf6a08563b/jobs/91]

[JVM 8 Tests|https://app.circleci.com/pipelines/github/grighetto/cassandra/17/workflows/2cfc7b5f-6acc-420f-9fcd-ee4abfe3aa8a/jobs/92]

> flaky test testWriteUnknownResult- org.apache.cassandra.distributed.test.CasWriteTest
> -------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15676
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15676
>             Project: Cassandra
>          Issue Type: Task
>          Components: Test/dtest
>            Reporter: Kevin Gallardo
>            Assignee: Gianluca Righetto
>            Priority: Normal
>             Fix For: 4.0-alpha
>
>
> Failure observed in: https://app.circleci.com/pipelines/github/newkek/cassandra/33/workflows/54007cf7-4424-4ec1-9655-665f6044e6d1/jobs/187/tests
> {noformat}
> testWriteUnknownResult - org.apache.cassandra.distributed.test.CasWriteTest
> junit.framework.AssertionFailedError: Expecting cause to be CasWriteUncertainException
> 	at org.apache.cassandra.distributed.test.CasWriteTest.testWriteUnknownResult(CasWriteTest.java:257)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> {noformat}



--
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