@Override public CompactionAwareWriter getCompactionAwareWriter(ColumnFamilyStore cfs, Directories directories, LifecycleTransaction txn, Set<SSTableReader> nonExpiredSSTables) { if (majorCompaction) return new MajorLeveledCompactionWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, false); return new MaxSSTableSizeWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, getLevel(), false); }
@Override public void switchCompactionLocation(Directories.DataDirectory location) { this.sstableDirectory = location; averageEstimatedKeysPerSSTable = Math.round(((double) averageEstimatedKeysPerSSTable * sstablesWritten + partitionsWritten) / (sstablesWritten + 1)); sstableWriter.switchWriter(SSTableWriter.create(Descriptor.fromFilename(cfs.getSSTablePath(getDirectories().getLocationForDisk(sstableDirectory))), keysPerSSTable, minRepairedAt, cfs.metadata, new MetadataCollector(txn.originals(), cfs.metadata.comparator, currentLevel), SerializationHeader.make(cfs.metadata, txn.originals()), cfs.indexManager.listIndexes(), txn)); partitionsWritten = 0; sstablesWritten = 0; } }
@Override @SuppressWarnings("resource") public boolean realAppend(UnfilteredRowIterator partition) { RowIndexEntry rie = sstableWriter.append(partition); partitionsWritten++; long totalWrittenInCurrentWriter = sstableWriter.currentWriter().getEstimatedOnDiskBytesWritten(); if (totalWrittenInCurrentWriter > maxSSTableSize) { totalWrittenInLevel += totalWrittenInCurrentWriter; if (totalWrittenInLevel > LeveledManifest.maxBytesForLevel(currentLevel, levelFanoutSize, maxSSTableSize)) { totalWrittenInLevel = 0; currentLevel++; } switchCompactionLocation(sstableDirectory); } return rie != null; }
@Override public void switchCompactionLocation(Directories.DataDirectory location) { this.sstableDirectory = location; averageEstimatedKeysPerSSTable = Math.round(((double) averageEstimatedKeysPerSSTable * sstablesWritten + partitionsWritten) / (sstablesWritten + 1)); sstableWriter.switchWriter(SSTableWriter.create(Descriptor.fromFilename(cfs.getSSTablePath(getDirectories().getLocationForDisk(sstableDirectory))), keysPerSSTable, minRepairedAt, cfs.metadata, new MetadataCollector(txn.originals(), cfs.metadata.comparator, currentLevel), SerializationHeader.make(cfs.metadata, txn.originals()), cfs.indexManager.listIndexes(), txn)); partitionsWritten = 0; sstablesWritten = 0; } }
@Override @SuppressWarnings("resource") public boolean realAppend(UnfilteredRowIterator partition) { RowIndexEntry rie = sstableWriter.append(partition); partitionsWritten++; long totalWrittenInCurrentWriter = sstableWriter.currentWriter().getEstimatedOnDiskBytesWritten(); if (totalWrittenInCurrentWriter > maxSSTableSize) { totalWrittenInLevel += totalWrittenInCurrentWriter; if (totalWrittenInLevel > LeveledManifest.maxBytesForLevel(currentLevel, levelFanoutSize, maxSSTableSize)) { totalWrittenInLevel = 0; currentLevel++; } switchCompactionLocation(sstableDirectory); } return rie != null; }
@Override public CompactionAwareWriter getCompactionAwareWriter(ColumnFamilyStore cfs, Directories directories, LifecycleTransaction txn, Set<SSTableReader> nonExpiredSSTables) { if (majorCompaction) return new MajorLeveledCompactionWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, false); return new MaxSSTableSizeWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, getLevel(), false); }
@Override public void switchCompactionLocation(Directories.DataDirectory location) { this.sstableDirectory = location; averageEstimatedKeysPerSSTable = Math.round(((double) averageEstimatedKeysPerSSTable * sstablesWritten + partitionsWritten) / (sstablesWritten + 1)); sstableWriter.switchWriter(SSTableWriter.create(Descriptor.fromFilename(cfs.getSSTablePath(getDirectories().getLocationForDisk(sstableDirectory))), keysPerSSTable, minRepairedAt, cfs.metadata, new MetadataCollector(txn.originals(), cfs.metadata.comparator, currentLevel), SerializationHeader.make(cfs.metadata, txn.originals()), cfs.indexManager.listIndexes(), txn)); partitionsWritten = 0; sstablesWritten = 0; } }
@Override @SuppressWarnings("resource") public boolean realAppend(UnfilteredRowIterator partition) { RowIndexEntry rie = sstableWriter.append(partition); partitionsWritten++; long totalWrittenInCurrentWriter = sstableWriter.currentWriter().getEstimatedOnDiskBytesWritten(); if (totalWrittenInCurrentWriter > maxSSTableSize) { totalWrittenInLevel += totalWrittenInCurrentWriter; if (totalWrittenInLevel > LeveledManifest.maxBytesForLevel(currentLevel, levelFanoutSize, maxSSTableSize)) { totalWrittenInLevel = 0; currentLevel++; } switchCompactionLocation(sstableDirectory); } return rie != null; }
@Override public CompactionAwareWriter getCompactionAwareWriter(ColumnFamilyStore cfs, Directories directories, LifecycleTransaction txn, Set<SSTableReader> nonExpiredSSTables) { if (majorCompaction) return new MajorLeveledCompactionWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, false); return new MaxSSTableSizeWriter(cfs, directories, txn, nonExpiredSSTables, maxSSTableBytes, getLevel(), false); }