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

Stefan Miklosovic commented on CASSANDRA-21545:
-----------------------------------------------

[~marcuse]  [~samt] any ideas? 

> CQL load interference with Cassandra 6 cold startup
> ---------------------------------------------------
>
>                 Key: CASSANDRA-21545
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21545
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Cluster/Membership
>            Reporter: Svyatoslav Kushnarev
>            Priority: Normal
>
> _*{{CQL}}*_ traffic during first cold start can fail _*TCM/CMS*_ election 
> with empty {{{_}ReplicaGroups{_}.}}
> On first cold start, while Cassandra is still running _*TCM/CMS*_ election, 
> concurrent client _*CQL*_ load can cause *_Paxos_* prepare failures against 
> empty ownership metadata:
> {{_IllegalStateException: Could not find range for token -9223372036854775808 
> in ReplicaGroups: ReplicaGroups{}_}}
> That failure then surfaces as *{{WriteFailureException}}* in 
> *{{DistributedMetadataLogKeyspace}}* CAS, and TCM election fails so the node 
> errors out.
> With no concurrent _*CQL*_ client traffic during cold start, the same 
> _*Cassandra 6.0-alpha1*_ start completes successfully.
> h3. Steps to reproduce:
>  # Start a fresh *_Cassandra 6.0-alpha1_* node/cluster (first CMS 
> initialisation).
>  # While it is still booting, repeatedly issue light *_CQL_* against the 
> native port
>  #  Paxos prepare fails on empty {{{}ReplicaGroups{}{{}}}}, 
> {{DistributedMetadataLogKeyspace}} CAS fails, and first-CMS initialization / 
> election aborts.
> {*}Error log below{*}:
> {code:java}
> INFO o.apache.cassandra.tcm.log.LocalLog Enacted PreInitialize. New tail is 
> Epoch{epoch=1} ERROR o.a.c.s.paxos.PaxosRequestCallback Failed to apply 
> Prepare(823cca62-596f-11f1-94a1-186780f5f064) locally 
> java.lang.IllegalStateException: Could not find range for token 
> -9223372036854775808 in ReplicaGroups: ReplicaGroups{} at 
> org.apache.cassandra.tcm.ownership.ReplicaGroups.forRange(ReplicaGroups.java:150)
>  at 
> org.apache.cassandra.tcm.ownership.ReplicaGroups.forToken(ReplicaGroups.java:155)
>  at 
> org.apache.cassandra.locator.EndpointsForToken.natural(EndpointsForToken.java:167)
>  at 
> org.apache.cassandra.service.paxos.Paxos.isInRangeAndShouldProcess(Paxos.java:1181)
>  at 
> org.apache.cassandra.service.paxos.PaxosPrepare$RequestHandler.execute(PaxosPrepare.java:1120)
>  at 
> org.apache.cassandra.service.paxos.PaxosRequestCallback.executeOnSelf(PaxosRequestCallback.java:61)
>  at 
> org.apache.cassandra.service.paxos.PaxosPrepare.lambda$start$0(PaxosPrepare.java:429)
>  at 
> org.apache.cassandra.concurrent.ExecutionFailure$1.run(ExecutionFailure.java:138)
>  at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:156) at 
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>  at java.base/java.lang.Thread.run(Thread.java:840) ERROR 
> o.a.c.s.DistributedMetadataLogKeyspace Caught an exception while trying to 
> CAS org.apache.cassandra.exceptions.WriteFailureException: Operation failed - 
> received 0 responses and 1 failures: UNKNOWN from /100.29.27.6:7000 at 
> org.apache.cassandra.service.paxos.Paxos$MaybeFailure.markAndThrowAsTimeoutOrFailure(Paxos.java:640)
>  at org.apache.cassandra.service.paxos.Paxos.begin(Paxos.java:1150) at 
> org.apache.cassandra.service.paxos.Paxos.cas(Paxos.java:734) at 
> org.apache.cassandra.service.StorageProxy.cas(StorageProxy.java:393) at 
> org.apache.cassandra.cql3.statements.ModificationStatement.executeWithCondition(ModificationStatement.java:700)
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:658)
>  at org.apache.cassandra.cql3.QueryProcessor.execute(QueryProcessor.java:601) 
> at org.apache.cassandra.cql3.QueryProcessor.execute(QueryProcessor.java:584) 
> at 
> org.apache.cassandra.schema.DistributedMetadataLogKeyspace.initialize(DistributedMetadataLogKeyspace.java:90)
>  at 
> org.apache.cassandra.schema.DistributedMetadataLogKeyspace.tryCommit(DistributedMetadataLogKeyspace.java:127)
>  at 
> org.apache.cassandra.tcm.PaxosBackedProcessor.tryCommitOne(PaxosBackedProcessor.java:69)
>  at 
> org.apache.cassandra.tcm.AbstractLocalProcessor.commit(AbstractLocalProcessor.java:99)
>  at 
> org.apache.cassandra.tcm.ClusterMetadataService$SwitchableProcessor.commit(ClusterMetadataService.java:973)
>  at org.apache.cassandra.tcm.Processor.commit(Processor.java:50) at 
> org.apache.cassandra.tcm.ClusterMetadataService.commit(ClusterMetadataService.java:613)
>  at 
> org.apache.cassandra.tcm.ClusterMetadataService.commit(ClusterMetadataService.java:578)
>  at 
> org.apache.cassandra.tcm.Startup.initializeAsFirstCMSNode(Startup.java:153) 
> at org.apache.cassandra.tcm.migration.Election.finish(Election.java:139) at 
> org.apache.cassandra.tcm.migration.Election.nominateSelf(Election.java:99) at 
> org.apache.cassandra.tcm.Startup.initializeForDiscovery(Startup.java:239) at 
> org.apache.cassandra.tcm.Startup.initialize(Startup.java:122) at 
> org.apache.cassandra.tcm.Startup.initialize(Startup.java:97) at 
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:280) 
> at 
> org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
>  at 
> org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993) 
> ERROR o.a.c.s.paxos.PaxosRequestCallback Failed to apply 
> Prepare(825d4ab2-596f-11f1-eb80-c8da9957f64b) locally 
> java.lang.IllegalStateException: Could not find range for token 
> -9223372036854775808 in ReplicaGroups: ReplicaGroups{} at 
> org.apache.cassandra.tcm.ownership.ReplicaGroups.forRange(ReplicaGroups.java:150)
>  at 
> org.apache.cassandra.tcm.ownership.ReplicaGroups.forToken(ReplicaGroups.java:155)
>  at 
> org.apache.cassandra.locator.EndpointsForToken.natural(EndpointsForToken.java:167)
>  at 
> org.apache.cassandra.service.paxos.Paxos.isInRangeAndShouldProcess(Paxos.java:1181)
>  at 
> org.apache.cassandra.service.paxos.PaxosPrepare$RequestHandler.execute(PaxosPrepare.java:1120)
>  at 
> org.apache.cassandra.service.paxos.PaxosRequestCallback.executeOnSelf(PaxosRequestCallback.java:61)
>  at 
> org.apache.cassandra.service.paxos.PaxosPrepare.lambda$start$0(PaxosPrepare.java:429)
>  at 
> org.apache.cassandra.concurrent.ExecutionFailure$1.run(ExecutionFailure.java:138)at
>  org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:156) at 
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at
>  java.base/java.lang.Thread.run(Thread.java:840) {code}
> h3. Expectations:
> External factors (client _*CQL*_ traffic during cold start) must not break 
> bootstrap. Cassandra should tolerate concurrent client traffic during 
> _*TCM/CMS*_ initialisation on cold start (especially _*CQL*_ hitting the 
> native port early).



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