Closed adejanovski closed 3 months ago
ton of work here, lgtm, just some comments wrt readability and safety.
what does concern me is if this addresses the primary reason (as far as we know) to want to use subrange IR – to break up and pace out the IR+anti-compactions to a rate and load that stabilises the cluster…
how do we know subranges are optimal for this ?
what does concern me is if this addresses the primary reason (as far as we know) to want to use subrange IR – to break up and pace out the IR+anti-compactions to a rate and load that stabilises the cluster… how do we know subranges are optimal for this ?
We don't, and I guess it depends on factors that we don't control. Since this has been requested and is allowed by Cassandra 4, I think it's ok to give the option and let users find the best solution for their clusters. The good part here is that the number of segments is tunable, so one can find a sweet spot even with large numbers of vnodes.
Comments addressed, ready for another review @michaelsembwever
Fixes #1502
Before reviewing, please ensure you're aware of our PR review guidelines.
Here are the key changes in this PR:
Dependency Update
8.19
to10.17.0
. This might include enhancements, bug fixes, or new features provided by the newer Checkstyle version.New Configuration Options for Incremental Repair
api.md:
incrementalRepair
option is expanded to clarify that it performs incremental repair on all tokens of each node at once.subrangeIncrementalRepair
is introduced. This allows incremental repair to be done in subrange mode, targeting discrete token ranges. This option is available starting from Cassandra 4.0.docker_vars.md and reaper_specific.md:
REAPER_SUBRANGE_INCREMENTAL
environment variable to support subrange incremental repairs.subrangeIncrementalRepair
setting.Configuration Changes
REAPER_SUBRANGE_INCREMENTAL
is set tofalse
by default in Docker configurations, allowing users to enable it as needed.Checkstyle Configuration Update
https://checkstyle.org/dtds/configuration_1_3.dtd
.CLI Enhancements
--subrange-incremental
to the CLI tool, allowing users to specify whether to perform subrange incremental repairs directly from the command line.Code Adjustments for Repair Functionality
ReaperApplication.java:
subrangeIncrementalRepair
configuration to ensure it is correctly read and applied.AppContext.java and ClusterFacade.java:
RepairUnit.java:
subrangeIncrementalRepair
.RepairRunService.java, RepairManager.java, RepairRunner.java, and SegmentRunner.java:
RepairType.java:
SUBRANGE_FULL
,INCREMENTAL
, andSUBRANGE_INCREMENTAL
.Database Interaction
subrangeIncrementalRepair
is only enabled for Cassandra versions 4.0 and above.incrementalRepair
andsubrangeIncrementalRepair
in incompatible versions of Cassandra.Miscellaneous Adjustments
subrangeIncrementalRepair
parameter.By introducing
subrangeIncrementalRepair
, this PR enhances the repair flexibility for large clusters, particularly those running on Cassandra 4.0 or later. This mode allows for more efficient repairs by dividing the repair process into smaller, manageable subranges, potentially improving performance and reducing repair time.