Repository: cassandra Updated Branches: refs/heads/trunk f97e41049 -> f531c67d6
avoid unlikely race condition wrt disk sizing, producing a seemingly bogus exception message Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f531c67d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f531c67d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f531c67d Branch: refs/heads/trunk Commit: f531c67d687a004bcda57582e68f90b1901e992d Parents: f97e410 Author: Dave Brosius <[email protected]> Authored: Wed Aug 3 23:25:46 2016 -0400 Committer: Dave Brosius <[email protected]> Committed: Wed Aug 3 23:25:46 2016 -0400 ---------------------------------------------------------------------- .../db/compaction/writers/CompactionAwareWriter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f531c67d/src/java/org/apache/cassandra/db/compaction/writers/CompactionAwareWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/writers/CompactionAwareWriter.java b/src/java/org/apache/cassandra/db/compaction/writers/CompactionAwareWriter.java index 3557022..205aebe 100644 --- a/src/java/org/apache/cassandra/db/compaction/writers/CompactionAwareWriter.java +++ b/src/java/org/apache/cassandra/db/compaction/writers/CompactionAwareWriter.java @@ -208,16 +208,20 @@ public abstract class CompactionAwareWriter extends Transactional.AbstractTransa if (directory == null) directory = sstable.descriptor.directory; if (!directory.equals(sstable.descriptor.directory)) + { logger.trace("All sstables not from the same disk - putting results in {}", directory); + break; + } } Directories.DataDirectory d = getDirectories().getDataDirectoryForFile(directory); if (d != null) { - if (d.getAvailableSpace() < estimatedWriteSize) + long availableSpace = d.getAvailableSpace(); + if (availableSpace < estimatedWriteSize) throw new RuntimeException(String.format("Not enough space to write %s to %s (%s available)", FBUtilities.prettyPrintMemory(estimatedWriteSize), d.location, - FBUtilities.prettyPrintMemory(d.getAvailableSpace()))); + FBUtilities.prettyPrintMemory(availableSpace))); logger.trace("putting compaction results in {}", directory); return d; }
