public void MaybeScheduleCompaction() {
		assert (mutex_.isHeldByCurrentThread());
		if (bg_compaction_scheduled_) {
			// Already scheduled
			LOG.info("Already scheduled");
		} else if (shutting_down_.get()) {
			// DB is being deleted; no more background compactions
			LOG.info("DB is being deleted");
		} else if (imm_ == null && manual_compaction_ == null
				&& !versions_.NeedsCompaction()) {
			// No work to be done
			LOG.info("No work to be done");
		} else {
			bg_compaction_scheduled_ = true;
			// env_.Schedule(&DBImpl::BGWork, this);
			LOG.info("Schedule new background thread");
			env_.Schedule(new BGWork());
		}
	}