Andy Tolbert created CASSANDRA-20187:
----------------------------------------
Summary: Add metrics to RepairTokenRangeSplitter
Key: CASSANDRA-20187
URL: https://issues.apache.org/jira/browse/CASSANDRA-20187
Project: Apache Cassandra
Issue Type: Improvement
Reporter: Andy Tolbert
While experimenting with {{RepairTokenRangeSplitter}} I found myself often
consulting logs to see how it was splitting up repair assignments by bytes or
partitions.
It would improve observability to expose some metrics at a table level by
repair type around how the splitter breaks up work, some ideas:
* # assignments created
* bytes per assignment
* partitions per assignment
* # skipped assignments
* skipped bytes
Some examples of what we're currently surfacing in logs:
{noformat}
2025-01-05 03:23:09,568 INFO [AutoRepair-Repair-incremental:1]
org.apache.cassandra.repair.autorepair.RepairTokenRangeSplitter - Adding
SizedRepairAssignment{description='full primary range for table',
tokenRange=(-9223372036854775808,-7686143364045646507], keyspaceName='x',
tableNames=[y], estimatedBytes=7.34 GiB}, increasing repair bytes to 7.34 GiB
of 100GiB
2025-01-05 03:23:09,568 INFO [AutoRepair-Repair-incremental:1]
org.apache.cassandra.repair.autorepair.RepairTokenRangeSplitter - Returning 1
assignment(s) for priorityBucket 0 and keyspace x, totaling 7.34 GiB (7.34 GiB
of 100GiB overall) {noformat}
{noformat}
2025-01-03 23:48:07,766 INFO [AutoRepair-Repair-full:1]
org.apache.cassandra.repair.autorepair.RepairTokenRangeSplitter - Splitting x.y
for range (1537228672809129301,3074457345618258602] into 6 sub ranges by
partitions (splitsForSize=1, splitsForPartitions=6,
approximateBytesInRange=2.25 GiB, approximatePartitionsInRange=5892606,
approximateBytesPerSplit=383.37 MiB, approximatePartitionsPerSplit=982101)
2025-01-03 23:48:07,768 INFO [AutoRepair-Repair-full:1]
org.apache.cassandra.repair.autorepair.RepairTokenRangeSplitter - Adding
SizedRepairAssignment{description='subrange 1 of 6',
tokenRange=(1793433451610650840,2049638230412172350], keyspaceName='x',
tableNames=[y], estimatedBytes=383.37 MiB}, increasing repair bytes to 383.39
MiB
2025-01-03 23:48:07,768 INFO [AutoRepair-Repair-full:1]
org.apache.cassandra.repair.autorepair.RepairTokenRangeSplitter - Adding
SizedRepairAssignment{description='subrange 2 of 6',
tokenRange=(2305843009213693951,2562047788015215399], keyspaceName='x',
tableNames=[y], estimatedBytes=383.37 MiB}, increasing repair bytes to 766.76
MiB
... {noformat}
{noformat}
INFO [AutoRepair-Repair-incremental:1] 2025-01-03 17:09:48,438
RepairTokenRangeSplitter.java:424 - Adding
SizedRepairAssignment{description='subrange 1 of 16',
tokenRange=(3628454496450787640,3695689239027386361], keyspaceName='ks',
tableNames=[t1], estimatedBytes=1001.35 KiB}, increasing repair bytes to
1001.35 KiB of 1MiB
WARN [AutoRepair-Repair-incremental:1] 2025-01-03 17:09:48,438
RepairTokenRangeSplitter.java:415 - Skipping
SizedRepairAssignment{description='subrange 2 of 16',
tokenRange=(3762923981603985083,3830158724180583804], keyspaceName='ks',
tableNames=[t1], estimatedBytes=1001.35 KiB} because it would increase total
repair bytes to 1.96 MiB of 1MiB {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]