public void WriteLevel0Table(MemTable memTable, Version currentVersion, VersionEdit edit) { var stopwatch = Stopwatch.StartNew(); var fileNumber = state.VersionSet.NewFileNumber(); pendingOutputs.Add(fileNumber); var fileMetadata = state.BuildTable(memTable, fileNumber); pendingOutputs.Remove(fileNumber); // Note that if file_size is zero, the file has been deleted and // should not be added to the manifest. int level = 0; if (fileMetadata.FileSize > 0) { var minUserKey = fileMetadata.SmallestKey.UserKey; var maxUserKey = fileMetadata.LargestKey.UserKey; if (currentVersion != null) { level = currentVersion.PickLevelForMemTableOutput(minUserKey, maxUserKey); } edit.AddFile(level, fileMetadata); } state.CompactionStats[level].Add(new CompactionStats { Milliseconds = stopwatch.ElapsedMilliseconds, BytesRead = 0, BytesWritten = fileMetadata.FileSize }); }