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]

Reply via email to