You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "C. Scott Andreas (JIRA)" <ji...@apache.org> on 2018/11/19 02:14:00 UTC

[jira] [Updated] (CASSANDRA-12561) LCS compaction going into infinite loop due to non-existent sstables

     [ https://issues.apache.org/jira/browse/CASSANDRA-12561?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

C. Scott Andreas updated CASSANDRA-12561:
-----------------------------------------
    Component/s: Compaction

> LCS compaction going into infinite loop due to non-existent sstables
> --------------------------------------------------------------------
>
>                 Key: CASSANDRA-12561
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12561
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Compaction
>            Reporter: Nimi Wariboko Jr.
>            Priority: Major
>              Labels: lcs
>
> I believe this is related/similar to CASSANDRA-11373, but I'm running 3.5 and I still have this issue.
> AFAICT, this happens when getCompactionCandidates in LeveledManifest.java returns a candidate that does not exist on disk. 
> Eventually, all the compaction threads back up, garbage collections start taking an upwards of 20 seconds and messages start being dropped.
> To get around this, I patched my instance with the following code in LeveledManifest.java
> {code:java}
> Set<SSTableReader> removeCandidates = new HashSet<>();
>             for (SSTableReader sstable : candidates)
>             {
>                 if (!(new java.io.File(sstable.getFilename())).exists()) {
>                     removeCandidates.add(sstable);
>                     logger.warn("Not compating candidate {} because it does not exist ({}).", sstable.getFilename(), sstable.openReason);
>                 }
>             }
>             candidates.removeAll(removeCandidates);
>             if (candidates.size() < 2)
>                 return Collections.emptyList();
>             else
>                 return candidates;
> {code}
> This just removes any candidate that doesn't exist on disk - however I'm not sure what the side effects of this are.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org