Fix calling GetCurrentMutableCFOptions in CompactionJob::ProcessKeyValueCompaction()
Summary: GetCurrentMutableCFOptions() can only be called when DB mutex is held so we cannot call it in CompactionJob::ProcessKeyValueCompaction() since it's not holding the db mutex Test Plan: make check -j64 Reviewers: sdong, andrewkr Reviewed By: andrewkr Subscribers: andrewkr, dhruba Differential Revision: https://reviews.facebook.net/D57471
This commit is contained in:
parent
5407b7c6d9
commit
d9a7d8a769
@ -209,7 +209,7 @@ class ColumnFamilyData {
|
|||||||
const ImmutableCFOptions* ioptions() const { return &ioptions_; }
|
const ImmutableCFOptions* ioptions() const { return &ioptions_; }
|
||||||
// REQUIRES: DB mutex held
|
// REQUIRES: DB mutex held
|
||||||
// This returns the MutableCFOptions used by current SuperVersion
|
// This returns the MutableCFOptions used by current SuperVersion
|
||||||
// You shoul use this API to reference MutableCFOptions most of the time.
|
// You should use this API to reference MutableCFOptions most of the time.
|
||||||
const MutableCFOptions* GetCurrentMutableCFOptions() const {
|
const MutableCFOptions* GetCurrentMutableCFOptions() const {
|
||||||
return &(super_version_->mutable_cf_options);
|
return &(super_version_->mutable_cf_options);
|
||||||
}
|
}
|
||||||
|
@ -669,6 +669,8 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ColumnFamilyData* cfd = sub_compact->compaction->column_family_data();
|
ColumnFamilyData* cfd = sub_compact->compaction->column_family_data();
|
||||||
|
const MutableCFOptions* mutable_cf_options =
|
||||||
|
sub_compact->compaction->mutable_cf_options();
|
||||||
|
|
||||||
// To build compression dictionary, we sample the first output file, assuming
|
// To build compression dictionary, we sample the first output file, assuming
|
||||||
// it'll reach the maximum length, and then use the dictionary for compressing
|
// it'll reach the maximum length, and then use the dictionary for compressing
|
||||||
@ -680,8 +682,7 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
|
|||||||
cfd->ioptions()->compression_opts.max_dict_bytes > 0) {
|
cfd->ioptions()->compression_opts.max_dict_bytes > 0) {
|
||||||
const size_t kMaxSamples =
|
const size_t kMaxSamples =
|
||||||
cfd->ioptions()->compression_opts.max_dict_bytes >> kSampleLenShift;
|
cfd->ioptions()->compression_opts.max_dict_bytes >> kSampleLenShift;
|
||||||
const size_t kOutFileLen =
|
const size_t kOutFileLen = mutable_cf_options->MaxFileSizeForLevel(
|
||||||
cfd->GetCurrentMutableCFOptions()->MaxFileSizeForLevel(
|
|
||||||
compact_->compaction->output_level());
|
compact_->compaction->output_level());
|
||||||
if (kOutFileLen != port::kMaxSizet) {
|
if (kOutFileLen != port::kMaxSizet) {
|
||||||
const size_t kOutFileNumSamples = kOutFileLen >> kSampleLenShift;
|
const size_t kOutFileNumSamples = kOutFileLen >> kSampleLenShift;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user