/** * remove the readers from the set we're modifying */ public void cancel(Iterable<SSTableReader> cancels) { for (SSTableReader cancel : cancels) cancel(cancel); }
/** * remove the readers from the set we're modifying */ public void cancel(Iterable<SSTableReader> cancels) { for (SSTableReader cancel : cancels) cancel(cancel); }
/** * remove the readers from the set we're modifying */ public void cancel(Iterable<SSTableReader> cancels) { for (SSTableReader cancel : cancels) cancel(cancel); }
/** * remove the readers from the set we're modifying */ public void cancel(Iterable<SSTableReader> cancels) { for (SSTableReader cancel : cancels) cancel(cancel); }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { Set<SSTableReader> originals = Sets.newHashSet(transaction.originals()); Set<SSTableReader> needsRelocation = originals.stream().filter(s -> !inCorrectLocation(s)).collect(Collectors.toSet()); transaction.cancel(Sets.difference(originals, needsRelocation)); Map<Integer, List<SSTableReader>> groupedByDisk = groupByDiskIndex(needsRelocation); int maxSize = 0; for (List<SSTableReader> diskSSTables : groupedByDisk.values()) maxSize = Math.max(maxSize, diskSSTables.size()); List<SSTableReader> mixedSSTables = new ArrayList<>(); for (int i = 0; i < maxSize; i++) for (List<SSTableReader> diskSSTables : groupedByDisk.values()) if (i < diskSSTables.size()) mixedSSTables.add(diskSSTables.get(i)); return mixedSSTables; }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { Set<SSTableReader> originals = Sets.newHashSet(transaction.originals()); Set<SSTableReader> needsRelocation = originals.stream().filter(s -> !inCorrectLocation(s)).collect(Collectors.toSet()); transaction.cancel(Sets.difference(originals, needsRelocation)); Map<Integer, List<SSTableReader>> groupedByDisk = groupByDiskIndex(needsRelocation); int maxSize = 0; for (List<SSTableReader> diskSSTables : groupedByDisk.values()) maxSize = Math.max(maxSize, diskSSTables.size()); List<SSTableReader> mixedSSTables = new ArrayList<>(); for (int i = 0; i < maxSize; i++) for (List<SSTableReader> diskSSTables : groupedByDisk.values()) if (i < diskSSTables.size()) mixedSSTables.add(diskSSTables.get(i)); return mixedSSTables; }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { Set<SSTableReader> originals = Sets.newHashSet(transaction.originals()); Set<SSTableReader> needsRelocation = originals.stream().filter(s -> !inCorrectLocation(s)).collect(Collectors.toSet()); transaction.cancel(Sets.difference(originals, needsRelocation)); Map<Integer, List<SSTableReader>> groupedByDisk = groupByDiskIndex(needsRelocation); int maxSize = 0; for (List<SSTableReader> diskSSTables : groupedByDisk.values()) maxSize = Math.max(maxSize, diskSSTables.size()); List<SSTableReader> mixedSSTables = new ArrayList<>(); for (int i = 0; i < maxSize; i++) for (List<SSTableReader> diskSSTables : groupedByDisk.values()) if (i < diskSSTables.size()) mixedSSTables.add(diskSSTables.get(i)); return mixedSSTables; }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { List<SSTableReader> sortedSSTables = Lists.newArrayList(transaction.originals()); Collections.sort(sortedSSTables, SSTableReader.sizeComparator.reversed()); Iterator<SSTableReader> iter = sortedSSTables.iterator(); while (iter.hasNext()) { SSTableReader sstable = iter.next(); if (excludeCurrentVersion && sstable.descriptor.version.equals(sstable.descriptor.getFormat().getLatestVersion())) { transaction.cancel(sstable); iter.remove(); } } return sortedSSTables; }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { Iterable<SSTableReader> sstables = new ArrayList<>(transaction.originals()); Iterator<SSTableReader> iter = sstables.iterator(); while (iter.hasNext()) { SSTableReader sstable = iter.next(); if (excludeCurrentVersion && sstable.descriptor.version.equals(sstable.descriptor.getFormat().getLatestVersion())) { transaction.cancel(sstable); iter.remove(); } } return sstables; }
@Override public Iterable<SSTableReader> filterSSTables(LifecycleTransaction transaction) { List<SSTableReader> sortedSSTables = Lists.newArrayList(transaction.originals()); Collections.sort(sortedSSTables, SSTableReader.sizeComparator.reversed()); Iterator<SSTableReader> iter = sortedSSTables.iterator(); while (iter.hasNext()) { SSTableReader sstable = iter.next(); if (excludeCurrentVersion && sstable.descriptor.version.equals(sstable.descriptor.getFormat().getLatestVersion())) { transaction.cancel(sstable); iter.remove(); } } return sortedSSTables; }
public boolean reduceScopeForLimitedSpace(long expectedSize) { if (partialCompactionsAcceptable() && transaction.originals().size() > 1) { // Try again w/o the largest one. logger.warn("insufficient space to compact all requested files. {}MB required, {}", (float) expectedSize / 1024 / 1024, StringUtils.join(transaction.originals(), ", ")); // Note that we have removed files that are still marked as compacting. // This suboptimal but ok since the caller will unmark all the sstables at the end. SSTableReader removedSSTable = cfs.getMaxSizeFile(transaction.originals()); transaction.cancel(removedSSTable); return true; } return false; }
public boolean reduceScopeForLimitedSpace(long expectedSize) { if (partialCompactionsAcceptable() && transaction.originals().size() > 1) { // Try again w/o the largest one. logger.warn("insufficient space to compact all requested files. {}MB required, {}", (float) expectedSize / 1024 / 1024, StringUtils.join(transaction.originals(), ", ")); // Note that we have removed files that are still marked as compacting. // This suboptimal but ok since the caller will unmark all the sstables at the end. SSTableReader removedSSTable = cfs.getMaxSizeFile(transaction.originals()); transaction.cancel(removedSSTable); return true; } return false; }
public boolean reduceScopeForLimitedSpace(long expectedSize) { if (partialCompactionsAcceptable() && transaction.originals().size() > 1) { // Try again w/o the largest one. logger.warn("insufficient space to compact all requested files. {}MB required, {}", (float) expectedSize / 1024 / 1024, StringUtils.join(transaction.originals(), ", ")); // Note that we have removed files that are still marked as compacting. // This suboptimal but ok since the caller will unmark all the sstables at the end. SSTableReader removedSSTable = cfs.getMaxSizeFile(transaction.originals()); transaction.cancel(removedSSTable); return true; } return false; }
txn.cancel(sstable);
txn.cancel(sstable);
txn.cancel(Sets.union(nonAnticompacting, mutatedRepairStatuses)); validatedForRepair.release(Sets.union(nonAnticompacting, mutatedRepairStatuses)); assert txn.originals().equals(sstables);
txn.cancel(sstable);
txn.cancel(Sets.union(nonAnticompacting, mutatedRepairStatuses)); validatedForRepair.release(Sets.union(nonAnticompacting, mutatedRepairStatuses)); assert txn.originals().equals(sstables);
txn.cancel(Sets.union(nonAnticompacting, mutatedRepairStatuses)); validatedForRepair.release(Sets.union(nonAnticompacting, mutatedRepairStatuses)); assert txn.originals().equals(sstables);