Lines Matching refs:compact

736     CompactionState* compact = new CompactionState(c);  in BackgroundCompaction()  local
737 status = DoCompactionWork(compact); in BackgroundCompaction()
741 CleanupCompaction(compact); in BackgroundCompaction()
771 void DBImpl::CleanupCompaction(CompactionState* compact) { in CleanupCompaction() argument
773 if (compact->builder != NULL) { in CleanupCompaction()
775 compact->builder->Abandon(); in CleanupCompaction()
776 delete compact->builder; in CleanupCompaction()
778 assert(compact->outfile == NULL); in CleanupCompaction()
780 delete compact->outfile; in CleanupCompaction()
781 for (size_t i = 0; i < compact->outputs.size(); i++) { in CleanupCompaction()
782 const CompactionState::Output& out = compact->outputs[i]; in CleanupCompaction()
785 delete compact; in CleanupCompaction()
788 Status DBImpl::OpenCompactionOutputFile(CompactionState* compact) { in OpenCompactionOutputFile() argument
789 assert(compact != NULL); in OpenCompactionOutputFile()
790 assert(compact->builder == NULL); in OpenCompactionOutputFile()
800 compact->outputs.push_back(out); in OpenCompactionOutputFile()
806 Status s = env_->NewWritableFile(fname, &compact->outfile); in OpenCompactionOutputFile()
808 compact->builder = new TableBuilder(options_, compact->outfile); in OpenCompactionOutputFile()
813 Status DBImpl::FinishCompactionOutputFile(CompactionState* compact, in FinishCompactionOutputFile() argument
815 assert(compact != NULL); in FinishCompactionOutputFile()
816 assert(compact->outfile != NULL); in FinishCompactionOutputFile()
817 assert(compact->builder != NULL); in FinishCompactionOutputFile()
819 const uint64_t output_number = compact->current_output()->number; in FinishCompactionOutputFile()
824 const uint64_t current_entries = compact->builder->NumEntries(); in FinishCompactionOutputFile()
826 s = compact->builder->Finish(); in FinishCompactionOutputFile()
828 compact->builder->Abandon(); in FinishCompactionOutputFile()
830 const uint64_t current_bytes = compact->builder->FileSize(); in FinishCompactionOutputFile()
831 compact->current_output()->file_size = current_bytes; in FinishCompactionOutputFile()
832 compact->total_bytes += current_bytes; in FinishCompactionOutputFile()
833 delete compact->builder; in FinishCompactionOutputFile()
834 compact->builder = NULL; in FinishCompactionOutputFile()
838 s = compact->outfile->Sync(); in FinishCompactionOutputFile()
841 s = compact->outfile->Close(); in FinishCompactionOutputFile()
843 delete compact->outfile; in FinishCompactionOutputFile()
844 compact->outfile = NULL; in FinishCompactionOutputFile()
857 compact->compaction->level(), in FinishCompactionOutputFile()
866 Status DBImpl::InstallCompactionResults(CompactionState* compact) { in InstallCompactionResults() argument
869 compact->compaction->num_input_files(0), in InstallCompactionResults()
870 compact->compaction->level(), in InstallCompactionResults()
871 compact->compaction->num_input_files(1), in InstallCompactionResults()
872 compact->compaction->level() + 1, in InstallCompactionResults()
873 static_cast<long long>(compact->total_bytes)); in InstallCompactionResults()
876 compact->compaction->AddInputDeletions(compact->compaction->edit()); in InstallCompactionResults()
877 const int level = compact->compaction->level(); in InstallCompactionResults()
878 for (size_t i = 0; i < compact->outputs.size(); i++) { in InstallCompactionResults()
879 const CompactionState::Output& out = compact->outputs[i]; in InstallCompactionResults()
880 compact->compaction->edit()->AddFile( in InstallCompactionResults()
884 return versions_->LogAndApply(compact->compaction->edit(), &mutex_); in InstallCompactionResults()
887 Status DBImpl::DoCompactionWork(CompactionState* compact) { in DoCompactionWork() argument
892 compact->compaction->num_input_files(0), in DoCompactionWork()
893 compact->compaction->level(), in DoCompactionWork()
894 compact->compaction->num_input_files(1), in DoCompactionWork()
895 compact->compaction->level() + 1); in DoCompactionWork()
897 assert(versions_->NumLevelFiles(compact->compaction->level()) > 0); in DoCompactionWork()
898 assert(compact->builder == NULL); in DoCompactionWork()
899 assert(compact->outfile == NULL); in DoCompactionWork()
901 compact->smallest_snapshot = versions_->LastSequence(); in DoCompactionWork()
903 compact->smallest_snapshot = snapshots_.oldest()->number_; in DoCompactionWork()
909 Iterator* input = versions_->MakeInputIterator(compact->compaction); in DoCompactionWork()
930 if (compact->compaction->ShouldStopBefore(key) && in DoCompactionWork()
931 compact->builder != NULL) { in DoCompactionWork()
932 status = FinishCompactionOutputFile(compact, input); in DoCompactionWork()
955 if (last_sequence_for_key <= compact->smallest_snapshot) { in DoCompactionWork()
959 ikey.sequence <= compact->smallest_snapshot && in DoCompactionWork()
960 compact->compaction->IsBaseLevelForKey(ikey.user_key)) { in DoCompactionWork()
979 compact->compaction->IsBaseLevelForKey(ikey.user_key), in DoCompactionWork()
980 (int)last_sequence_for_key, (int)compact->smallest_snapshot); in DoCompactionWork()
985 if (compact->builder == NULL) { in DoCompactionWork()
986 status = OpenCompactionOutputFile(compact); in DoCompactionWork()
991 if (compact->builder->NumEntries() == 0) { in DoCompactionWork()
992 compact->current_output()->smallest.DecodeFrom(key); in DoCompactionWork()
994 compact->current_output()->largest.DecodeFrom(key); in DoCompactionWork()
995 compact->builder->Add(key, input->value()); in DoCompactionWork()
998 if (compact->builder->FileSize() >= in DoCompactionWork()
999 compact->compaction->MaxOutputFileSize()) { in DoCompactionWork()
1000 status = FinishCompactionOutputFile(compact, input); in DoCompactionWork()
1013 if (status.ok() && compact->builder != NULL) { in DoCompactionWork()
1014 status = FinishCompactionOutputFile(compact, input); in DoCompactionWork()
1025 for (int i = 0; i < compact->compaction->num_input_files(which); i++) { in DoCompactionWork()
1026 stats.bytes_read += compact->compaction->input(which, i)->file_size; in DoCompactionWork()
1029 for (size_t i = 0; i < compact->outputs.size(); i++) { in DoCompactionWork()
1030 stats.bytes_written += compact->outputs[i].file_size; in DoCompactionWork()
1034 stats_[compact->compaction->level() + 1].Add(stats); in DoCompactionWork()
1037 status = InstallCompactionResults(compact); in DoCompactionWork()