Bohdan Siryk created CASSGO-133:
-----------------------------------
Summary: Cap RequestErrUnprepared retry recursion on query and
batch paths
Key: CASSGO-133
URL: https://issues.apache.org/jira/browse/CASSGO-133
Project: Apache Cassandra Go driver
Issue Type: Improvement
Reporter: Bohdan Siryk
>From PR description:
>
{{Conn.executeQuery}} and {{Conn.executeBatch}} both respond to a
{{*RequestErrUnprepared}} by evicting the prepared-statement cache entry and
recursing on themselves with no upper bound.
When the server persistently re-reports the same statement as unprepared after
re-prepare — for example a coordinator thrashing its prepared-statement cache
under high statement cardinality, or a misbehaving proxy/fork — the recursion
never terminates. The goroutine stack eventually exceeds
{{runtime.SetMaxStack}} (1 GiB by default), at which point Go's runtime crashes
the *entire process* with an unrecoverable stack-overflow throw. No
{{recover()}} can intercept it.
>
The drvier should not fall in an endless recursion, better is to return an
error and allow RetryPolicy to decide wheter it is worth retry on the same host
or another one
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]