From e48ab69c6b2f9f58f1059aad4066587b9768e147 Mon Sep 17 00:00:00 2001 From: Vaidas Gasiunas Date: Thu, 21 Apr 2022 18:53:08 +0200 Subject: [PATCH 1/6] An option to specify a custom directory for temporary client library copies --- fdbclient/MultiVersionTransaction.actor.cpp | 8 ++++++-- fdbclient/MultiVersionTransaction.h | 1 + fdbclient/vexillographer/fdb.options | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/fdbclient/MultiVersionTransaction.actor.cpp b/fdbclient/MultiVersionTransaction.actor.cpp index 94d27eded3..ae8432469b 100644 --- a/fdbclient/MultiVersionTransaction.actor.cpp +++ b/fdbclient/MultiVersionTransaction.actor.cpp @@ -1996,8 +1996,9 @@ std::vector> MultiVersionApi::copyExternalLibraryPe for (int ii = 0; ii < threadCount; ++ii) { std::string filename = basename(path); - char tempName[PATH_MAX + 12]; - sprintf(tempName, "/tmp/%s-XXXXXX", filename.c_str()); + constexpr int MAX_TMP_NAME_LENGTH = PATH_MAX + 12; + char tempName[MAX_TMP_NAME_LENGTH]; + snprintf(tempName, MAX_TMP_NAME_LENGTH, "%s/%s-XXXXXX", tmpDir.c_str(), filename.c_str()); int tempFd = mkstemp(tempName); int fd; @@ -2143,6 +2144,9 @@ void MultiVersionApi::setNetworkOptionInternal(FDBNetworkOptions::Option option, // multiple client threads are not supported on windows. threadCount = extractIntOption(value, 1, 1); #endif + } else if (option == FDBNetworkOptions::CLIENT_TMP_DIR) { + validateOption(value, true, false, false); + tmpDir = abspath(value.get().toString()); } else { forwardOption = true; } diff --git a/fdbclient/MultiVersionTransaction.h b/fdbclient/MultiVersionTransaction.h index bf8bc11d13..1fb5c604ff 100644 --- a/fdbclient/MultiVersionTransaction.h +++ b/fdbclient/MultiVersionTransaction.h @@ -898,6 +898,7 @@ private: int nextThread = 0; int threadCount; + std::string tmpDir; Mutex lock; std::vector>>> options; diff --git a/fdbclient/vexillographer/fdb.options b/fdbclient/vexillographer/fdb.options index 9f2f9e52f9..cafa0cc402 100644 --- a/fdbclient/vexillographer/fdb.options +++ b/fdbclient/vexillographer/fdb.options @@ -134,6 +134,9 @@ description is not currently required but encouraged.