[ https://issues.apache.org/jira/browse/CASSANDRA-12979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15726632#comment-15726632 ]
Jon Haddad commented on CASSANDRA-12979: ---------------------------------------- https://github.com/apache/cassandra/pull/87 > checkAvailableDiskSpace doesn't update expectedWriteSize when reducing thread > scope > ----------------------------------------------------------------------------------- > > Key: CASSANDRA-12979 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12979 > Project: Cassandra > Issue Type: Bug > Reporter: Jon Haddad > Assignee: Jon Haddad > Fix For: 2.2.9, 3.0.11, 4.0, 3.x > > > If a compaction occurs that looks like it'll take up more space than > remaining disk available, the compaction manager attempts to reduce the scope > of the compaction by calling {{reduceScopeForLimitedSpace()}} repeatedly. > Unfortunately, the while loop passes the {{estimatedWriteSize}} calculated > from the original call to {{hasAvailableDiskSpace}}, so the comparisons that > are done will always be against the size of the original compaction, rather > than the reduced scope one. > Full method below: > {code} > protected void checkAvailableDiskSpace(long estimatedSSTables, long > expectedWriteSize) > { > if(!cfs.isCompactionDiskSpaceCheckEnabled() && compactionType == > OperationType.COMPACTION) > { > logger.info("Compaction space check is disabled"); > return; > } > while (!getDirectories().hasAvailableDiskSpace(estimatedSSTables, > expectedWriteSize)) > { > if (!reduceScopeForLimitedSpace()) > throw new RuntimeException(String.format("Not enough space > for compaction, estimated sstables = %d, expected write size = %d", > estimatedSSTables, expectedWriteSize)); > > } > } > {code} > I'm proposing to recalculate the {{estimatedSSTables}} and > {{expectedWriteSize}} after each iteration of {{reduceScopeForLimitedSpace}}. > -- This message was sent by Atlassian JIRA (v6.3.4#6332)