[ 
https://issues.apache.org/jira/browse/CASSANDRA-21426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18085899#comment-18085899
 ] 

Patrick Lee commented on CASSANDRA-21426:
-----------------------------------------

i was testing some things out and it looks like if you change 
src/java/org/apache/cassandra/repair/autorepair/AutoRepairUtils.java at line 735
{code:java}
for (Map.Entry<AbstractReplicationStrategy, List<String>> entry : 
replicationStrategies.entrySet())
{
    AbstractReplicationStrategy replicationStrategy = entry.getKey();
    EndpointsByRange endpointsByRange = 
replicationStrategy.getRangeAddresses(StorageService.instance.getTokenMetadata());
 {code}
to
{code:java}
for (Map.Entry<AbstractReplicationStrategy, List<String>> entry : 
replicationStrategies.entrySet())
{
    AbstractReplicationStrategy replicationStrategy = entry.getKey();
    EndpointsByRange endpointsByRange = 
replicationStrategy.getRangeAddresses(StorageService.instance.getTokenMetadata().cachedOnlyTokenMap());
 {code}
this seems to address the issue.  i've been able to patch this and run it in 
CCM with 9 nodes and never see this assertion error, if i do the same thing for 
version 5.0.8 then the logs are full of the assertion error after a while.

> Auto-repair AssertionError in hasReplicaWithOngoingRepair when 
> parallel_repair_count > 1 or more precisely:
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-21426
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21426
>             Project: Apache Cassandra
>          Issue Type: Bug
>            Reporter: Patrick Lee
>            Priority: Normal
>
> testing out auto-repair in 5.0.8, i came across an assertion error when more 
> than 1 node is configured to be able to run
> {code:java}
> ERROR [AutoRepair-Repair-incremental:1] 2026-06-03T05:04:18,206 
> JVMStabilityInspector.java:70 - Exception in thread 
> Thread[AutoRepair-Repair-incremental:1,5,AutoRepair-Repair-incremental]
> java.lang.AssertionError: null
>         at 
> org.apache.cassandra.locator.TokenMetadata.getTopology(TokenMetadata.java:1392)
>         at 
> org.apache.cassandra.locator.NetworkTopologyStrategy.calculateNaturalReplicas(NetworkTopologyStrategy.java:190)
>         at 
> org.apache.cassandra.locator.AbstractReplicationStrategy.getRangeAddresses(AbstractReplicationStrategy.java:265)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepairUtils.hasReplicaWithOngoingRepair(AutoRepairUtils.java:738)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepairUtils.lambda$getMostEligibleHostToRepair$5(AutoRepairUtils.java:697)
>         at 
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
>         at 
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>         at 
> java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:361)
>         at 
> java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:528)
>         at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
>         at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
>         at 
> java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
>         at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>         at 
> java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepairUtils.getMostEligibleHostToRepair(AutoRepairUtils.java:706)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepairUtils.myTurnToRunRepair(AutoRepairUtils.java:956)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepair.repair(AutoRepair.java:204)
>         at 
> org.apache.cassandra.repair.autorepair.AutoRepair.lambda$setup$0(AutoRepair.java:143)
>         at 
> org.apache.cassandra.concurrent.ExecutionFailure$1.run(ExecutionFailure.java:133)
>         at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
>         at 
> java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
>         at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>         at 
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>         at java.base/java.lang.Thread.run(Thread.java:840) {code}
> while running with the parallel_repair_count: 1 everything was fine but then 
> i changed this to 3 and started seeing these assertion errors.  repairs still 
> ran, it was just only 1 node allowed at a time.



--
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