[ 
https://issues.apache.org/jira/browse/CASSANDRA-20187?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andy Tolbert reassigned CASSANDRA-20187:
----------------------------------------

    Assignee: Andy Tolbert

> 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
>            Assignee: Andy Tolbert
>            Priority: Normal
>
> 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