public void WriteSnapshot(LogWriter logWriter, VersionSet versionSet) { var edit = new VersionEdit(); AddMetadata(edit, storageContext.Options); AddCompactionPointers(edit, versionSet); AddFiles(edit, versionSet); edit.EncodeTo(logWriter); }
private static void AddCompactionPointers(VersionEdit edit, VersionSet versionSet) { for (int level = 0; level < Config.NumberOfLevels; level++) { var compactionPointer = versionSet.CompactionPointers[level]; if (!compactionPointer.IsEmpty()) { edit.SetCompactionPointer(level, new InternalKey(compactionPointer)); } } }
private static void AddFiles(VersionEdit edit, VersionSet versionSet) { for (int level = 0; level < Config.NumberOfLevels; level++) { var files = versionSet.Current.Files[level]; foreach (var file in files) { edit.AddFile(level, file); } } }
public Snapshot CreateNewSnapshot(VersionSet versionSet) { var snapshot = new Snapshot { Sequence = versionSet.LastSequence }; snapshots.TryAdd(snapshot, null); return snapshot; }
public StorageState(string name, StorageOptions options) { _perfCounters = new PerfCounters(name); _cancellationTokenSource = new CancellationTokenSource(); CancellationToken = _cancellationTokenSource.Token; Options = options; InternalKeyComparator = new InternalKeyComparator(options.Comparator); DatabaseName = name; Lock = new AsyncLock(); FileSystem = new FileSystem(DatabaseName); MemTable = new MemTable(this); TableCache = new TableCache(this); VersionSet = new VersionSet(this); Compactor = new BackgroundCompactor(this); Snapshooter = new Snapshooter(this); }
public Version(StorageState storageContext, VersionSet versionSet) : this(storageContext) { VersionSet = versionSet; }