From e3f626b49c9bb91e18ef7d77944c1bd2371a7128 Mon Sep 17 00:00:00 2001 From: Weng Xuetian Date: Sun, 6 Aug 2023 15:35:50 -0700 Subject: [PATCH] Fix a potential race condition of MaybeCreateDirectory (#683) * Fix a potential race condition of MaybeCreateDirectory --------- Co-authored-by: Qijia Liu --- src/rime/lever/deployment_tasks.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/rime/lever/deployment_tasks.cc b/src/rime/lever/deployment_tasks.cc index dd3ba13481..d041a3d21a 100644 --- a/src/rime/lever/deployment_tasks.cc +++ b/src/rime/lever/deployment_tasks.cc @@ -268,14 +268,16 @@ SchemaUpdate::SchemaUpdate(TaskInitializer arg) : verbose_(false) { } static bool MaybeCreateDirectory(fs::path dir) { - if (!fs::exists(dir)) { - boost::system::error_code ec; - if (!fs::create_directories(dir, ec)) { - LOG(ERROR) << "error creating directory '" << dir.string() << "'."; - return false; - } + boost::system::error_code ec; + if (fs::create_directories(dir, ec)) { + return true; } - return true; + + if (fs::exists(dir)) { + return true; + } + LOG(ERROR) << "error creating directory '" << dir.string() << "'."; + return false; } static bool RemoveVersionSuffix(string* version, const string& suffix) {