cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Petrov (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-14821) Make it possible to run multi-node coordinator/replica tests in a single JVM
Date Wed, 17 Oct 2018 09:47:00 GMT


Alex Petrov commented on CASSANDRA-14821:

Thank you [] for your feedback. I've added some more complex tests to make
it more illustrative: one is illustrative for [CASSANDRA-13004] and one for failing read/repair
(when node drops read-repair message). 

I wouldn't say that this is work in progress even by the time of first submission, but I agree
that some additional description to get people more excited about it was due. I hoped it was
covered in the initial issue description, but I'm also happy to elaborate. This testing framework
will help us to introduce things that are otherwise difficult to reproduce. For example [CASSANDRA-13304]
was quite hard to catch and only thanks to folks who have submitted a go program that would
help to reproduce it we were able to catch it. Creating a dtest test for it would've been
rather difficult. Similarly, read/repair dropping messages would've required to introduce
Byteman scripts, which are much less reliable than direct code execution.

Hope the latest version and this comment will be more helpful in terms of our motivation.

> Make it possible to run multi-node coordinator/replica tests in a single JVM
> ----------------------------------------------------------------------------
>                 Key: CASSANDRA-14821
>                 URL:
>             Project: Cassandra
>          Issue Type: Test
>            Reporter: Alex Petrov
>            Assignee: Alex Petrov
>            Priority: Major
> Currently, dtests are complex to write, hard to modify and slow to run. The only option
to manipulate a cluster state is either to shut down nodes or run unreliable Byteman queries.

> In order to improve the situation, a new Distributed Tester is proposed. It fires up
multiple Cassandra Instances in a single JVM. It is done through having distinct class loaders
in order to work around the singleton problem in Cassandra. In order to be able to pass some
information between the nodes, a common class loader is used that loads up java standard library
and several helper classes. Tests look a lot like CQLTester tests would usually look like.
> Each Cassandra Instance, with its distinct class loader is using serialisation and class
loading mechanisms in order to run instance-local queries and execute node state manipulation
code, hooks, callbacks etc.
> First version mocks out Messaging Service and simplifies schema management by simply
running schema change commands on each of the instances separately. Internode communication
is mocked by passing ByteBuffers through shared class loader.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message