From 8dd0a7e11abad6bc32e59a5cba8769961e085312 Mon Sep 17 00:00:00 2001 From: Andrew Kryczka Date: Wed, 11 Oct 2017 15:11:08 -0700 Subject: [PATCH] add comment in SuperVersion referencing logic Summary: The referencing logic is super confusing so added a comment at the part that took me longest to figure out. Closes https://github.com/facebook/rocksdb/pull/2996 Differential Revision: D6034969 Pulled By: ajkr fbshipit-source-id: 9cc2e744c1f79d6d57d378f86ed59238a5f583db --- db/column_family.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/db/column_family.cc b/db/column_family.cc index 766508c36..367d4b608 100644 --- a/db/column_family.cc +++ b/db/column_family.cc @@ -854,6 +854,10 @@ SuperVersion* ColumnFamilyData::GetReferencedSuperVersion( sv = GetThreadLocalSuperVersion(db_mutex); sv->Ref(); if (!ReturnThreadLocalSuperVersion(sv)) { + // This Unref() corresponds to the Ref() in GetThreadLocalSuperVersion() + // when the thread-local pointer was populated. So, the Ref() earlier in + // this function still prevents the returned SuperVersion* from being + // deleted out from under the caller. sv->Unref(); } return sv;