diff --git a/utilities/blob_db/blob_db_impl.cc b/utilities/blob_db/blob_db_impl.cc index f614f3bac9ec69f6bb855cf451e0f8bf1e2062a6..068f8cfe8e3986fd58deb2c1c173d32546b8e5f5 100644 --- a/utilities/blob_db/blob_db_impl.cc +++ b/utilities/blob_db/blob_db_impl.cc @@ -1143,13 +1143,13 @@ Status BlobDBImpl::GetImpl(const ReadOptions& read_options, } std::pair BlobDBImpl::SanityCheck(bool aborted) { - if (aborted) return std::make_pair(false, -1); + if (aborted) { + return std::make_pair(false, -1); + } ROCKS_LOG_INFO(db_options_.info_log, "Starting Sanity Check"); - ROCKS_LOG_INFO(db_options_.info_log, "Number of files %" PRIu64, blob_files_.size()); - ROCKS_LOG_INFO(db_options_.info_log, "Number of open files %" PRIu64, open_ttl_files_.size()); @@ -1157,14 +1157,33 @@ std::pair BlobDBImpl::SanityCheck(bool aborted) { assert(!bfile->Immutable()); } - uint64_t epoch_now = EpochNow(); + uint64_t now = EpochNow(); - for (auto bfile_pair : blob_files_) { - auto bfile = bfile_pair.second; - ROCKS_LOG_INFO( - db_options_.info_log, "Blob File %s %" PRIu64 " %" PRIu64 " %" PRIu64, - bfile->PathName().c_str(), bfile->GetFileSize(), bfile->BlobCount(), - (bfile->expiration_range_.second - epoch_now)); + for (auto blob_file_pair : blob_files_) { + auto blob_file = blob_file_pair.second; + char buf[1000]; + int pos = snprintf(buf, sizeof(buf), + "Blob file %" PRIu64 ", size %" PRIu64 + ", blob count %" PRIu64 ", immutable %d", + blob_file->BlobFileNumber(), blob_file->GetFileSize(), + blob_file->BlobCount(), blob_file->Immutable()); + if (blob_file->HasTTL()) { + auto expiration_range = blob_file->GetExpirationRange(); + pos += snprintf(buf + pos, sizeof(buf) - pos, + ", expiration range (%" PRIu64 ", %" PRIu64 ")", + expiration_range.first, expiration_range.second); + if (!blob_file->Obsolete()) { + pos += snprintf(buf + pos, sizeof(buf) - pos, + ", expire in %" PRIu64 " seconds", + expiration_range.second - now); + } + } + if (blob_file->Obsolete()) { + pos += snprintf(buf + pos, sizeof(buf) - pos, ", obsolete at %" PRIu64, + blob_file->GetObsoleteSequence()); + } + snprintf(buf + pos, sizeof(buf) - pos, "."); + ROCKS_LOG_INFO(db_options_.info_log, "%s", buf); } // reschedule @@ -1254,7 +1273,14 @@ bool BlobDBImpl::VisibleToActiveSnapshot( oldest_snapshot = snapshots.oldest()->GetSequenceNumber(); } } - return oldest_snapshot < obsolete_sequence; + bool visible = oldest_snapshot < obsolete_sequence; + if (visible) { + ROCKS_LOG_INFO(db_options_.info_log, + "Obsolete blob file %" PRIu64 " (obsolete at %" PRIu64 + ") visible to oldest snapshot %" PRIu64 ".", + bfile->BlobFileNumber(), obsolete_sequence, oldest_snapshot); + } + return visible; } std::pair BlobDBImpl::EvictExpiredFiles(bool aborted) {