1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| SuperVersion* ColumnFamilyData::GetThreadLocalSuperVersion(DBImpl* db) { void* ptr = local_sv_->Swap(SuperVersion::kSVInUse); assert(ptr != SuperVersion::kSVInUse); SuperVersion* sv = static_cast<SuperVersion*>(ptr); if (sv == SuperVersion::kSVObsolete) {
RecordTick(ioptions_.stats, NUMBER_SUPERVERSION_ACQUIRES); db->mutex()->Lock(); sv = super_version_->Ref(); db->mutex()->Unlock(); } assert(sv != nullptr); return sv; }
|