thelastpickle / cassandra-reaper

Automated Repair Awesomeness for Apache Cassandra
http://cassandra-reaper.io/
Apache License 2.0
490 stars 218 forks source link

Disallow a full/incremental to start if another one is running #1465

Open adejanovski opened 9 months ago

adejanovski commented 9 months ago

Project board link

Currently we disallow running twice the same repair, but an incremental could start even if a full is already running for the same keyspace.

We should prevent that from happening and make the scheduler check if another repair is running for the same keyspace before starting a new repair.

┆Issue is synchronized with this Jira Story by Unito ┆Issue Number: REAP-15

kzalys commented 9 months ago

Hi @adejanovski, just wondering, what is the reason we want to make sure that we do not have 2 repair sessions of different types running at the same time? Is it just to avoid overstreaming?

adejanovski commented 9 months ago

Hi @kzalys, having multiple threads working concurrently on the same sstables is a good way to shoot yourself in the foot and opens the door to race conditions in Cassandra itself. An sstable cannot be compacted and anticompacted at the same time, which is one type of conflict that can happen. The overstreaming and additional pressure put on the cluster is another good reason not to do this indeed.

ujo-trackunit commented 8 months ago

We are running incremental repairs for one set of tables in a keyspace but full for another set. Should disallow happen on per table basis instead - or are we doing something bad?