[Do Not Merge] For review only#3846
Closed
jaydeepkumar1984 wants to merge 132 commits intoapache:trunkfrom
Closed
Conversation
…s for auto-repair
…yspace is provided in args
…t::testConversionsInverses
…EP_IF_REPAIR_FINISHES_QUICKLY
Summary of impacting changes:
* RepairTokenRangeSplitter is now the default in favor of
FixedSplitTokenRangeSplitter.
* number_of_subranges moved from a repair_type_override/global config
to a property of FixedSplitTokenRangeSplitter.
* [get|set]autorepairconfig usability changes
Detailed breakdown of changes:
0. IAutoRepairTokenRangeSplitter changes:
* Move RepairType from an parameter in getRepairAssignments to
a parameter in the constructor for implementations. This was done
because the RepairType is always the same for a splitter instance.
* Add setParameter and getParameter methods which are used by
setautorepairconfig and getautorepairconfig to dynamically update
splitter configuration.
1. [get|set]autorepairconfig changes:
* getautorepairconfig output now shows property names instead of
human readable names (e.g. repair_check_interval instead of
repair eligibility check interval). This was done to make it more
intuitive to know what properties to use for setautorepairconfig.
* getautorepairconfig and setautorepairconfig now support viewing
and changing splitter properties, e.g.:
setautorepairconfig token_range_splitter.max_bytes_per_schedule 500GiB -t full
2. RepairTokenRangeSplitter changes:
* Renames RepairRangeSplitter to RepairTokenRangeSplitter and makes it
the default implementation.
* Establishes defaults for each repair type to be sensible.
* Improve javadocs detailing the primary goal of the splitter, its
configuration and its defaults and the justifications for using them.
* Rename variables to be consistent with their setting names.
3. FixedSplitTokenRangeSplitter changes:
* Renames DefaultAutoRepairTokenSplitter to
FixedSplitTokenRangeSplitter as it is no longer the default.
* Move number_of_subranges from a global config to a property for
this splitter.
4. RepairAssignmentIterator
* Refactored common code from both splitter implementations into
RepairAssignmentIterator with the aim to reduce the amount of
boiler plate custom splitter implementations need to implement.
5. Test changes
* Fix AutoRepairParameterizedTest to use fixed splitter so we get a
deterministic repair plan.
* Allow splitter to be changed programmatically, only expect it to be
used for tests.
* Rename CassandraSreamReceiverTest and fix it
Whether streaming cdc/mvs into commitlogs was previously dependent
on system properties; update the test to account for the new
yaml properties.
* Fix dtest after CASSANDRA-20160
The introduction of repair_task_min_duration causes repairs to take
cumulatively longer for a node than 2 minutes. To resolve this,
set that to 0s, and also enable repair_by_keyspace and set subranges
to 1 to reduce the overall number of repairs.
Patch by Andy Tolbert; reviewed by ___ for CASSANDRA-20179
* Move curly brackets to new line * Remove unused config declaration in constructor
Also remove redundant AutoRepairConfig.RepairType for RepairType in AutoRepairConfig.
* Promote node not being present in gossip to warn * Clean up NUMBER_OF_SUBRANGES doc * Simplify default map parameter parsing in both splitters * Doc cleanup and make RepairAssignmentIterator fully public * Remove unnecessary getters and setters in Splitters * Handle case where ColumnFamilyStore not retrievable, in this case return no assignments as we can assume deleted. * Always return a RepairAssignment for a table, even if empty, in RepairTokenRangeSplitter as node may have missed writes * Add set|getParameters tests * Update AutoRepairParameterizedTest to use RepairTokenRangeSplitter * Move no-split specific test to FixedSplitTokenRangeSplitterTest
Updates partitions_per_assignment to not be based on repair_session_max_tree_depth which is deprecated. Instead, just use 2^20. Also updates documentation around partitions_per_assignment and cleans up some warnings in RepairTokeRangeSplitter. patch by Andy Tolbert; reviewed by Jaydeep Chovatia for CASSANDRA-20231
Creating repair sessions by table can create an overwhelming amount of repairs, especially with vnodes. If a repair assignment is too big (> 64 tables by default, or > 200GB for full/50GB for incremental) RepairTokenRangeSplitter will already split into multiple repair assignments. Adjusts repair_by_keyspace to default to true. patch by Andy Tolbert; reviewed by Jaydeep Chovatia for CASSANDRA-20232
Patch by Francisco Guerrero; reviewed by TBD for CASSANDRA-20185
…ation in the AutoRepairServiceMBean definition
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thanks for sending a pull request! Here are some tips if you're new here:
Commit messages should follow the following format:
The Cassandra Jira