You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Yifan Cai (Jira)" <ji...@apache.org> on 2020/05/09 23:45:00 UTC
[jira] [Updated] (CASSANDRA-15800) BinLog deadlock on stopping when
the sample queue is full
[ https://issues.apache.org/jira/browse/CASSANDRA-15800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yifan Cai updated CASSANDRA-15800:
----------------------------------
Bug Category: Parent values: Degradation(12984)Level 1 values: Resource Management(12995)
Complexity: Normal
Discovered By: Code Inspection
Severity: Normal
> BinLog deadlock on stopping when the sample queue is full
> ---------------------------------------------------------
>
> Key: CASSANDRA-15800
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15800
> Project: Cassandra
> Issue Type: Bug
> Components: Observability/Logging
> Reporter: Yifan Cai
> Assignee: Yifan Cai
> Priority: Normal
>
> A deadlock can happen when 1) the BinLog is being stoped and 2) the BinLog's internal sample queue is full.
> When stopping, BinLog first set the flag shouldContinue to false, so that the internal consumer thread stop consuming. It is possible to leave the queue being full.
> Then, the BinLog puts one extra object NO_OP into the sample queue. However, the queue is already full, so the put operation blocks, and the stop method never returns.
> Therefore, we got a deadlock.
> BinLog is used by Cassandra 40 new features such as audit logging and full query logging.
> If such deadlock happens, the thread cannot be not joined and the referenced items in the queue are never released, hence memory leak.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org