From 57a95a700155345c658936a3b2ca492f36192691 Mon Sep 17 00:00:00 2001 From: Tomas Kolda Date: Wed, 27 Jan 2016 21:00:42 +0100 Subject: [PATCH] Making use of GetSystemTimePreciseAsFileTime dynamic - code review fixes --- db/auto_roll_logger.cc | 4 +++- port/win/env_win.cc | 20 +++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/db/auto_roll_logger.cc b/db/auto_roll_logger.cc index c984b4810b..b8ba14c834 100644 --- a/db/auto_roll_logger.cc +++ b/db/auto_roll_logger.cc @@ -32,9 +32,11 @@ Status AutoRollLogger::ResetLogger() { } void AutoRollLogger::RollLogFile() { + // This function is called when log is rotating. Two rotations + // can happen quickly (NowMicro returns same value). To not overwrite + // previous log file we increment by one micro second and try again. uint64_t now = env_->NowMicros(); std::string old_fname; - // Try to check target name only 10 times at most for (int i = 0; i < 10; i++) { old_fname = OldInfoLogFileName( dbname_, now, db_absolute_path_, db_log_dir_); diff --git a/port/win/env_win.cc b/port/win/env_win.cc index 87a25569c8..1ae0b19326 100644 --- a/port/win/env_win.cc +++ b/port/win/env_win.cc @@ -2110,28 +2110,22 @@ class WinEnv : public Env { std::vector thread_pools_; mutable std::mutex mu_; std::vector threads_to_join_; - static FnGetSystemTimePreciseAsFileTime GetSystemTimePreciseAsFileTime_; - static bool GetSystemTimePreciseAsFileTimeInitialized_; + FnGetSystemTimePreciseAsFileTime GetSystemTimePreciseAsFileTime_; }; -FnGetSystemTimePreciseAsFileTime WinEnv::GetSystemTimePreciseAsFileTime_ = NULL; -bool WinEnv::GetSystemTimePreciseAsFileTimeInitialized_ = false; - WinEnv::WinEnv() : checkedDiskForMmap_(false), forceMmapOff(false), page_size_(4 * 1012), allocation_granularity_(page_size_), perf_counter_frequency_(0), - thread_pools_(Priority::TOTAL) { + thread_pools_(Priority::TOTAL), + GetSystemTimePreciseAsFileTime_(NULL) { - if (!GetSystemTimePreciseAsFileTimeInitialized_) { - HMODULE module = GetModuleHandle("kernel32.dll"); - if (module != NULL) { - GetSystemTimePreciseAsFileTime_ = (FnGetSystemTimePreciseAsFileTime)GetProcAddress( - module, "GetSystemTimePreciseAsFileTime"); - } - GetSystemTimePreciseAsFileTimeInitialized_ = true; + HMODULE module = GetModuleHandle("kernel32.dll"); + if (module != NULL) { + GetSystemTimePreciseAsFileTime_ = (FnGetSystemTimePreciseAsFileTime)GetProcAddress( + module, "GetSystemTimePreciseAsFileTime"); } SYSTEM_INFO sinfo;