From e56ce0369170e5d977e4cb6ecd37e27190b6541b Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Wed, 23 Oct 2013 10:59:08 -0700 Subject: [PATCH] Hardcoding temp file name for Identity file to 000000.dbtmp just like it's done for CURRENT file Summary: as per Dhruba's suggestion Test Plan: make all check; Seen the Id getting generated properly in db_repl_stress Reviewers: dhruba, kailiu Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D13635 --- db/filename.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/db/filename.cc b/db/filename.cc index 786861026..5c475ddba 100644 --- a/db/filename.cc +++ b/db/filename.cc @@ -92,7 +92,7 @@ std::string LockFileName(const std::string& dbname) { } std::string TempFileName(const std::string& dbname, uint64_t number) { - assert(number > 0); + assert(number >= 0); return MakeFileName(dbname, number, "dbtmp"); } @@ -234,7 +234,8 @@ Status SetCurrentFile(Env* env, const std::string& dbname, Status SetIdentityFile(Env* env, const std::string& dbname) { std::string id = env->GenerateUniqueId(); assert(!id.empty()); - std::string tmp = TempFileName(dbname, id.size()); + // Reserve the filename dbname/000000.dbtmp for the temporary identity file + std::string tmp = TempFileName(dbname, 0); Status s = WriteStringToFileSync(env, id, tmp); if (s.ok()) { s = env->RenameFile(tmp, IdentityFileName(dbname));