[
https://issues.apache.org/jira/browse/CASSANDRA-21593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18106703#comment-18106703
]
Michael Semb Wever commented on CASSANDRA-21593:
------------------------------------------------
+1
> CEP-45: Fix OpOrder.Group leak in ReadExecutionController.forCommand()
> ----------------------------------------------------------------------
>
> Key: CASSANDRA-21593
> URL: https://issues.apache.org/jira/browse/CASSANDRA-21593
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Legacy/Core
> Reporter: Francisco Guerrero
> Assignee: Francisco Guerrero
> Priority: Normal
>
> When repaired-data tracking is enabled for partition reads and a read against
> a tracked table went through read-repair's digest-mismatch path, the
> {{ReadExecutionController}}'s constructor is throwing an
> {{IllegalArgumentException}}. In
> {{org.apache.cassandra.db.ReadExecutionController#forCommand}} we are
> starting the {{OpOrder.Group}}, without a try/catch/finally guard. When the
> exception is thrown, we are leaking {{OpOrder.Group}}. We are also not
> closing the {{OpOrder.Group}} for the index case in the {{indexCfs}}. A
> leaked Group never reaches the {{FINISHED}} state and then hanging
> {{OpOrder.Barrier.await()}} for every later barrier on that {{readOrdering}}
> and eventually blocking writes with no {{ERROR}} logged.
> The proposed fix focuses on two parts:
> 1. Excluded tracked tables when starting a repair in
> {{AbstractReadRepair.startRepair()}}. This is what triggers this issue.
> 2. Better handling of exceptions during
> {{ReadExecutionController.forCommand()}}, ensuring that the critical paths
> are in the try/catch block and properly handling closing the objects that
> exist.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]