void ForbidDeletePreservingHistory(long dontTouchGeneration, long[] usedFilesFromOldGenerations) { foreach (var fileStat in _fileStats.Index) { if (!_keyValueDB.ContainsValuesAndDoesNotTouchGeneration(_fileStats.KeyRef(fileStat), dontTouchGeneration) || (usedFilesFromOldGenerations != null && Array.BinarySearch(usedFilesFromOldGenerations, _keyValueDB.GetGeneration(_fileStats.KeyRef(fileStat))) >= 0)) { _fileStats.ValueRef(fileStat).MarkForbidToDelete(); } } }
internal void FastStartCleanUp() { if (_keyValueDB.FileCollection.GetCount() == 0) { return; } _root = _keyValueDB.LastCommited; var dontTouchGeneration = _keyValueDB.GetGeneration(_root.TrLogFileId); InitFileStats(dontTouchGeneration); CalculateFileUsefullness(); MarkTotallyUselessFilesAsUnknown(); }
internal void FastStartCleanUp() { if (_keyValueDB.FileCollection.GetCount() == 0) { return; } _root = _keyValueDB.LastCommited; var dontTouchGeneration = _keyValueDB.GetGeneration(_root.TrLogFileId); InitFileStats(dontTouchGeneration); CalculateFileUsefullness(_root, false); // useless files are calculated from "old" values, but they are uptodate MarkTotallyUselessFilesAsUnknown(); }
void ForbidDeletePreservingHistory(long dontTouchGeneration, long[] usedFilesFromOldGenerations) { for (var i = 0; i < _fileStats.Length; i++) { if (!_keyValueDB.ContainsValuesAndDoesNotTouchGeneration((uint)i, dontTouchGeneration) || (usedFilesFromOldGenerations != null && Array.BinarySearch(usedFilesFromOldGenerations, _keyValueDB.GetGeneration((uint)i)) >= 0)) { _fileStats[i].MarkForbidToDelete(); } } }
internal void FastStartCleanUp() { if (_keyValueDB.FileCollection.GetCount() == 0) { return; } _root = _keyValueDB.LastCommited; var dontTouchGeneration = _keyValueDB.GetGeneration(_root.TrLogFileId); InitFileStats(dontTouchGeneration); CalculateFileUsefullness(); var toRemoveFileIds = new List <uint>(); for (var i = 0; i < _fileStats.Length; i++) { if (_fileStats[i].Useless()) { toRemoveFileIds.Add((uint)i); } } _keyValueDB.MarkAsUnknown(toRemoveFileIds); }