From c3532e029a363e054b355d45ff7e76465b7f6b2b Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 9 Jul 2020 21:16:15 +0000 Subject: [PATCH 1/9] Fix warnings in mako --- bindings/c/test/mako/mako.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bindings/c/test/mako/mako.c b/bindings/c/test/mako/mako.c index 83821ceffd..fce05ccf44 100755 --- a/bindings/c/test/mako/mako.c +++ b/bindings/c/test/mako/mako.c @@ -803,12 +803,12 @@ int worker_process_main(mako_args_t *args, int worker_id, mako_shmhdr_t *shm) { int i; pthread_t network_thread; /* handle for thread which invoked fdb_run_network() */ - pthread_t *worker_threads; + pthread_t *worker_threads = NULL; #if FDB_API_VERSION < 610 FDBCluster *cluster; #endif process_info_t process; - thread_args_t *thread_args; + thread_args_t *thread_args = NULL; int rc; fdb_error_t err; @@ -825,7 +825,10 @@ int worker_process_main(mako_args_t *args, int worker_id, mako_shmhdr_t *shm) { // fprintf(stderr, "fdb_get_max_api_version: %d\n", // fdb_get_max_api_version()); err = fdb_select_api_version(fdb_get_max_api_version()); - check_fdb_error(err); + if (err) { + fprintf(stderr, "ERROR: Failed at %s:%d (%s)\n", __FILE__, __LINE__, fdb_get_error(err)); + return -1; + } /* enable flatbuffers if specified */ if (args->flatbuffers) { @@ -886,7 +889,10 @@ int worker_process_main(mako_args_t *args, int worker_id, mako_shmhdr_t *shm) { printf("DEBUG: fdb_setup_network\n"); } err = fdb_setup_network(); - check_fdb_error(err); + if (err) { + fprintf(stderr, "ERROR: Failed at %s:%d (%s)\n", __FILE__, __LINE__, fdb_get_error(err)); + return -1; + } /* Each worker process will have its own network thread */ if (args->verbose >= VERBOSE_DEBUG) { @@ -1637,7 +1643,7 @@ int main(int argc, char *argv[]) { int rc; mako_args_t args; int p; - pid_t *worker_pids; + pid_t *worker_pids = NULL; proc_type_t proc_type = proc_master; int worker_id; pid_t pid; @@ -1687,6 +1693,7 @@ int main(int argc, char *argv[]) { shmsize = sizeof(mako_shmhdr_t) + (sizeof(mako_stats_t) * args.num_processes * args.num_threads); if (ftruncate(shmfd, shmsize) < 0) { + shm = MAP_FAILED; fprintf(stderr, "ERROR: ftruncate (fd:%d size:%llu) failed\n", shmfd, (unsigned long long)shmsize); goto EXIT; From 6446b4c082a45e56f98b08830c655aec75c58c9d Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 9 Jul 2020 22:02:43 +0000 Subject: [PATCH 2/9] WIP --- bindings/java/JavaWorkload.cpp | 2 ++ cmake/CompileBoost.cmake | 2 +- cmake/ConfigureCompiler.cmake | 25 +++++++++++------- fdbclient/BackupContainer.actor.cpp | 2 +- fdbclient/FDBTypes.h | 2 +- fdbclient/MultiVersionTransaction.actor.cpp | 26 +++++++++---------- fdbserver/workloads/ApiCorrectness.actor.cpp | 13 +++------- .../workloads/AsyncFileCorrectness.actor.cpp | 14 ++++------ flow/Arena.h | 2 +- flow/AsioReactor.h | 3 +-- flow/ObjectSerializerTraits.h | 6 ++--- flow/flat_buffers.h | 2 +- flow/flow.h | 2 +- 13 files changed, 49 insertions(+), 52 deletions(-) diff --git a/bindings/java/JavaWorkload.cpp b/bindings/java/JavaWorkload.cpp index 286197997f..8bda4a445e 100644 --- a/bindings/java/JavaWorkload.cpp +++ b/bindings/java/JavaWorkload.cpp @@ -75,6 +75,8 @@ void printTrace(JNIEnv* env, jclass, jlong logger, jint severity, jstring messag sev = FDBSeverity::Warn; } else if (severity < 40) { sev = FDBSeverity::WarnAlways; + } else { + assert(false); } log->trace(sev, msg, detailsMap); if (isCopy) { diff --git a/cmake/CompileBoost.cmake b/cmake/CompileBoost.cmake index ede9afd946..f6ecebf1b2 100644 --- a/cmake/CompileBoost.cmake +++ b/cmake/CompileBoost.cmake @@ -22,5 +22,5 @@ else() add_library(boost_target INTERFACE) add_dependencies(boost_target boostProject) - target_include_directories(boost_target INTERFACE ${BOOST_INCLUDE_DIR}) + target_include_directories(boost_target SYSTEM INTERFACE ${BOOST_INCLUDE_DIR}) endif() diff --git a/cmake/ConfigureCompiler.cmake b/cmake/ConfigureCompiler.cmake index 38795c26b8..f0f566bea8 100644 --- a/cmake/ConfigureCompiler.cmake +++ b/cmake/ConfigureCompiler.cmake @@ -214,18 +214,25 @@ else() endif() endif() add_compile_options( - -Wno-unknown-warning-option - -Wno-dangling-else - -Wno-sign-compare + -Wall -Wextra + # Here's the current set of warnings we need to explicitly disable to compile warning-free with clang 10 -Wno-comment - -Wno-unknown-pragmas + -Wno-dangling-else -Wno-delete-non-virtual-dtor - -Wno-undefined-var-template - -Wno-unused-value - -Wno-tautological-pointer-compare -Wno-format - -Wredundant-move - -Wpessimizing-move + -Wno-mismatched-tags + -Wno-missing-field-initializers + -Wno-overloaded-virtual + -Wno-reorder-ctor + -Wno-sign-compare + -Wno-tautological-pointer-compare + -Wno-undefined-var-template + -Wno-unknown-pragmas + -Wno-unknown-warning-option + -Wno-unused-function + -Wno-unused-local-typedef + -Wno-unused-parameter + -Wno-unused-value ) if (USE_CCACHE) add_compile_options( diff --git a/fdbclient/BackupContainer.actor.cpp b/fdbclient/BackupContainer.actor.cpp index 209ce0fa4b..bd96901512 100644 --- a/fdbclient/BackupContainer.actor.cpp +++ b/fdbclient/BackupContainer.actor.cpp @@ -1242,7 +1242,7 @@ public: std::string uniquePath = fullPath + "." + deterministicRandom()->randomUniqueID().toString() + ".lnk"; unlink(uniquePath.c_str()); ASSERT(symlink(basename(path).c_str(), uniquePath.c_str()) == 0); - fullPath = uniquePath = uniquePath; + fullPath = uniquePath; } // Opening cached mode forces read/write mode at a lower level, overriding the readonly request. So cached mode // can't be used because backup files are read-only. Cached mode can only help during restore task retries handled diff --git a/fdbclient/FDBTypes.h b/fdbclient/FDBTypes.h index 765d5a69ce..233039d855 100644 --- a/fdbclient/FDBTypes.h +++ b/fdbclient/FDBTypes.h @@ -93,7 +93,7 @@ struct struct_like_traits : std::true_type { } template - static const void assign(Member& m, const Type& t, Context&) { + static void assign(Member& m, const Type& t, Context&) { if constexpr (i == 0) { m.id = t; } else { diff --git a/fdbclient/MultiVersionTransaction.actor.cpp b/fdbclient/MultiVersionTransaction.actor.cpp index ce7e6a02d7..3355003f2a 100644 --- a/fdbclient/MultiVersionTransaction.actor.cpp +++ b/fdbclient/MultiVersionTransaction.actor.cpp @@ -746,15 +746,16 @@ void MultiVersionDatabase::Connector::connect() { } tr = candidateDatabase->createTransaction(); - return ErrorOr>(mapThreadFuture(tr->getReadVersion(), [this](ErrorOr v) { - // If the version attempt returns an error, we regard that as a connection (except operation_cancelled) - if(v.isError() && v.getError().code() == error_code_operation_cancelled) { - return ErrorOr(v.getError()); - } - else { - return ErrorOr(Void()); - } - })); + return ErrorOr>( + mapThreadFuture(tr->getReadVersion(), [](ErrorOr v) { + // If the version attempt returns an error, we regard that as a connection (except + // operation_cancelled) + if (v.isError() && v.getError().code() == error_code_operation_cancelled) { + return ErrorOr(v.getError()); + } else { + return ErrorOr(Void()); + } + })); }); @@ -1024,7 +1025,7 @@ void MultiVersionApi::setSupportedClientVersions(Standalone versions) }, NULL); if(!bypassMultiClientApi) { - runOnExternalClients([this, versions](Reference client){ + runOnExternalClients([versions](Reference client) { client->api->setNetworkOption(FDBNetworkOptions::SUPPORTED_CLIENT_VERSIONS, versions); }); } @@ -1084,9 +1085,8 @@ void MultiVersionApi::setNetworkOptionInternal(FDBNetworkOptions::Option option, if(!bypassMultiClientApi) { if(networkSetup) { - runOnExternalClients([this, option, value](Reference client) { - client->api->setNetworkOption(option, value); - }); + runOnExternalClients( + [option, value](Reference client) { client->api->setNetworkOption(option, value); }); } else { options.push_back(std::make_pair(option, value.castTo>())); diff --git a/fdbserver/workloads/ApiCorrectness.actor.cpp b/fdbserver/workloads/ApiCorrectness.actor.cpp index c122c7c550..d57b0171c3 100644 --- a/fdbserver/workloads/ApiCorrectness.actor.cpp +++ b/fdbserver/workloads/ApiCorrectness.actor.cpp @@ -26,15 +26,7 @@ #include "flow/actorcompiler.h" // This must be the last #include. //An enum of API operation types used in the random test -enum OperationType { - SET, - GET, - GET_RANGE, - GET_RANGE_SELECTOR, - GET_KEY, - CLEAR, - CLEAR_RANGE -}; +enum OperationType { SET, GET, GET_RANGE, GET_RANGE_SELECTOR, GET_KEY, CLEAR, CLEAR_RANGE, UNINITIALIZED }; //A workload that executes the NativeAPIs functions and verifies that their outcomes are correct struct ApiCorrectnessWorkload : ApiWorkload { @@ -229,7 +221,7 @@ public: int pdfArray[] = { 0, (int)(100 * setProbability), 100, 50, 50, 20, (int)(100 * (1 - setProbability)), (int)(10 * (1 - setProbability)) }; vector pdf = vector(pdfArray, pdfArray + 8); - OperationType operation; + OperationType operation = UNINITIALIZED; //Choose a random operation type (SET, GET, GET_RANGE, GET_RANGE_SELECTOR, GET_KEY, CLEAR, CLEAR_RANGE). int totalDensity = 0; @@ -246,6 +238,7 @@ public: cumulativeDensity += pdf[i]; } + ASSERT(operation != UNINITIALIZED); ++self->numRandomOperations; diff --git a/fdbserver/workloads/AsyncFileCorrectness.actor.cpp b/fdbserver/workloads/AsyncFileCorrectness.actor.cpp index b3a624c677..1e27172955 100644 --- a/fdbserver/workloads/AsyncFileCorrectness.actor.cpp +++ b/fdbserver/workloads/AsyncFileCorrectness.actor.cpp @@ -300,18 +300,14 @@ struct AsyncFileCorrectnessWorkload : public AsyncFileWorkload { int64_t maxOffset; - //Reads should not exceed the extent of written data - if(info.operation == READ) - { + // Reads should not exceed the extent of written data + if (info.operation == READ) { maxOffset = fileSize - 1; - if(maxOffset < 0) - info.operation = WRITE; + if (maxOffset < 0) info.operation = WRITE; + // Only allow reads once the file has gotten large enough (to prevent blocking on locks) + if (maxOffset < targetFileSize / 2) info.operation = WRITE; } - //Only allow reads once the file has gotten large enough (to prevent blocking on locks) - if(maxOffset < targetFileSize / 2) - info.operation = WRITE; - //Writes can be up to the target file size or the current file size (the current file size could be larger than the target as a result of a truncate) if(info.operation == WRITE) maxOffset = std::max(fileSize, targetFileSize) - 1; diff --git a/flow/Arena.h b/flow/Arena.h index 50edd19997..3d7a6091f6 100644 --- a/flow/Arena.h +++ b/flow/Arena.h @@ -313,7 +313,7 @@ struct union_like_traits> : std::true_type { } template - static const void assign(Member& member, const U& t, Context&) { + static void assign(Member& member, const U& t, Context&) { member = t; } }; diff --git a/flow/AsioReactor.h b/flow/AsioReactor.h index ba818c7219..8fd959dfa6 100644 --- a/flow/AsioReactor.h +++ b/flow/AsioReactor.h @@ -55,7 +55,6 @@ private: #ifdef __linux__ class EventFD : public IEventFD { int fd; - ASIOReactor* reactor; boost::asio::posix::stream_descriptor sd; int64_t fdVal; @@ -66,7 +65,7 @@ private: } public: - EventFD(ASIOReactor* reactor) : reactor(reactor), sd(reactor->ios, open()) {} + EventFD(ASIOReactor* reactor) : sd(reactor->ios, open()) {} ~EventFD() { sd.close(); // Also closes the fd, I assume... } diff --git a/flow/ObjectSerializerTraits.h b/flow/ObjectSerializerTraits.h index 2f560f441c..dc3dd8c9ae 100644 --- a/flow/ObjectSerializerTraits.h +++ b/flow/ObjectSerializerTraits.h @@ -133,7 +133,7 @@ struct union_like_traits : std::false_type { static const index_t& get(const Member&, Context&); template - static const void assign(Member&, const Alternative&, Context&); + static void assign(Member&, const Alternative&, Context&); template static void done(Member&, Context&); @@ -150,7 +150,7 @@ struct struct_like_traits : std::false_type { static const index_t& get(const Member&, Context&); template - static const void assign(Member&, const index_t&, Context&); + static void assign(Member&, const index_t&, Context&); template static void done(Member&, Context&); @@ -175,7 +175,7 @@ struct union_like_traits> : std::true_type { } template - static const void assign(Member& member, const Alternative& a, Context&) { + static void assign(Member& member, const Alternative& a, Context&) { static_assert(std::is_same_v, Alternative>); member = a; } diff --git a/flow/flat_buffers.h b/flow/flat_buffers.h index 193813edd6..51b2cb2710 100644 --- a/flow/flat_buffers.h +++ b/flow/flat_buffers.h @@ -73,7 +73,7 @@ struct struct_like_traits> : std::true_type { } template - static const void assign(Member& m, const Type& t, Context&) { + static void assign(Member& m, const Type& t, Context&) { std::get(m) = t; } }; diff --git a/flow/flow.h b/flow/flow.h index 577d8ac1aa..19cea192aa 100644 --- a/flow/flow.h +++ b/flow/flow.h @@ -225,7 +225,7 @@ struct union_like_traits> : std::true_type { } template - static const void assign(Member& m, const Alternative& a, Context&) { + static void assign(Member& m, const Alternative& a, Context&) { if constexpr (i == 0) { m = a; } else { From 941cf7b03bc363e3c3a5c03677edb8ca393e2c3c Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 9 Jul 2020 22:17:54 +0000 Subject: [PATCH 3/9] Fix const return warning --- fdbclient/FileBackupAgent.actor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fdbclient/FileBackupAgent.actor.cpp b/fdbclient/FileBackupAgent.actor.cpp index d1282174b6..960988b48a 100644 --- a/fdbclient/FileBackupAgent.actor.cpp +++ b/fdbclient/FileBackupAgent.actor.cpp @@ -572,8 +572,8 @@ namespace fileBackup { // Functions for consuming big endian (network byte order) integers. // Consumes a big endian number, swaps it to little endian, and returns it. - const int32_t consumeNetworkInt32() { return (int32_t)bigEndian32((uint32_t)consume< int32_t>());} - const uint32_t consumeNetworkUInt32() { return bigEndian32( consume());} + int32_t consumeNetworkInt32() { return (int32_t)bigEndian32((uint32_t)consume< int32_t>());} + uint32_t consumeNetworkUInt32() { return bigEndian32( consume());} bool eof() { return rptr == end; } From f077d9889b16f17da863f5b427b4fd3329add1e7 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Fri, 10 Jul 2020 09:46:32 -0700 Subject: [PATCH 4/9] Fix osx build --- bindings/java/JavaWorkload.cpp | 1 + cmake/ConfigureCompiler.cmake | 1 + 2 files changed, 2 insertions(+) diff --git a/bindings/java/JavaWorkload.cpp b/bindings/java/JavaWorkload.cpp index 8bda4a445e..6dff50042f 100644 --- a/bindings/java/JavaWorkload.cpp +++ b/bindings/java/JavaWorkload.cpp @@ -77,6 +77,7 @@ void printTrace(JNIEnv* env, jclass, jlong logger, jint severity, jstring messag sev = FDBSeverity::WarnAlways; } else { assert(false); + std::abort(); } log->trace(sev, msg, detailsMap); if (isCopy) { diff --git a/cmake/ConfigureCompiler.cmake b/cmake/ConfigureCompiler.cmake index f0f566bea8..034df964f3 100644 --- a/cmake/ConfigureCompiler.cmake +++ b/cmake/ConfigureCompiler.cmake @@ -223,6 +223,7 @@ else() -Wno-mismatched-tags -Wno-missing-field-initializers -Wno-overloaded-virtual + -Wno-reorder -Wno-reorder-ctor -Wno-sign-compare -Wno-tautological-pointer-compare From 49bf42e66a9bb4e71ea94d49786568b9ab509c6c Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Wed, 22 Jul 2020 16:37:00 -0700 Subject: [PATCH 5/9] added the ability to suspend processes from fdbcli --- fdbcli/fdbcli.actor.cpp | 57 ++++++++++++++++++++++++++++++ fdbclient/ReadYourWrites.actor.cpp | 20 +++++++---- 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index 5d685c1400..b3037e42bb 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -553,6 +553,10 @@ void initHelp() { "kill all|list|
*", "attempts to kill one or more processes in the cluster", "If no addresses are specified, populates the list of processes which can be killed. Processes cannot be killed before this list has been populated.\n\nIf `all' is specified, attempts to kill all known processes.\n\nIf `list' is specified, displays all known processes. This is only useful when the database is unresponsive.\n\nFor each IP:port pair in
*, attempt to kill the specified process."); + helpMap["suspend"] = CommandHelp( + "suspend
*", + "attempts to suspend one or more processes in the cluster", + "If parameters are specified, populates the list of processes which can be suspended. Processes cannot be suspended before this list has been populated.\n\nFor each IP:port pair in
*, attempt to suspend the processes for the specified SECONDS after which the process will die."); helpMap["profile"] = CommandHelp( " ", "namespace for all the profiling-related commands.", @@ -3239,6 +3243,59 @@ ACTOR Future cli(CLIOptions opt, LineNoise* plinenoise) { continue; } + if (tokencmp(tokens[0], "suspend")) { + getTransaction(db, tr, options, intrans); + if (tokens.size() == 1) { + Standalone kvs = wait( makeInterruptable( tr->getRange(KeyRangeRef(LiteralStringRef("\xff\xff/worker_interfaces"), LiteralStringRef("\xff\xff\xff")), 1) ) ); + Reference connectLock(new FlowLock(CLIENT_KNOBS->CLI_CONNECT_PARALLELISM)); + std::vector> addInterfs; + for( auto it : kvs ) { + addInterfs.push_back(addInterface(&address_interface, connectLock, it)); + } + wait( waitForAll(addInterfs) ); + if(address_interface.size() == 0) { + printf("\nNo addresses can be killed.\n"); + } else if(address_interface.size() == 1) { + printf("\nThe following address can be killed:\n"); + } else { + printf("\nThe following %zu addresses can be killed:\n", address_interface.size()); + } + for( auto it : address_interface ) { + printf("%s\n", printable(it.first).c_str()); + } + printf("\n"); + } else if(tokens.size() == 2) { + printUsage(tokens[0]); + is_error = true; + } else { + for(int i = 2; i < tokens.size(); i++) { + if(!address_interface.count(tokens[i])) { + printf("ERROR: process `%s' not recognized.\n", printable(tokens[i]).c_str()); + is_error = true; + break; + } + } + + if(!is_error) { + double seconds; + int n=0; + auto secondsStr = tokens[1].toString(); + if (sscanf(secondsStr.c_str(), "%lf%n", &seconds, &n) != 1 || n != secondsStr.size()) { + printUsage(tokens[0]); + is_error = true; + } else { + int64_t timeout_ms = seconds*1000; + tr->setOption(FDBTransactionOptions::TIMEOUT, StringRef((uint8_t *)&timeout_ms, sizeof(int64_t))); + for(int i = 2; i < tokens.size(); i++) { + tr->set(LiteralStringRef("\xff\xff/suspend_worker"), address_interface[tokens[i]].first); + } + printf("Attempted to suspend %zu processes\n", tokens.size() - 2); + } + } + } + continue; + } + if (tokencmp(tokens[0], "force_recovery_with_data_loss")) { if(tokens.size() != 2) { printUsage(tokens[0]); diff --git a/fdbclient/ReadYourWrites.actor.cpp b/fdbclient/ReadYourWrites.actor.cpp index 5e2f3ec1aa..c2a0fbdb69 100644 --- a/fdbclient/ReadYourWrites.actor.cpp +++ b/fdbclient/ReadYourWrites.actor.cpp @@ -1610,13 +1610,19 @@ void ReadYourWritesTransaction::atomicOp( const KeyRef& key, const ValueRef& ope } void ReadYourWritesTransaction::set( const KeyRef& key, const ValueRef& value ) { - if (key == LiteralStringRef("\xff\xff/reboot_worker")){ - BinaryReader::fromStringRef(value, IncludeVersion()).reboot.send( RebootRequest() ); - return; - } - if (key == LiteralStringRef("\xff\xff/reboot_and_check_worker")){ - BinaryReader::fromStringRef(value, IncludeVersion()).reboot.send( RebootRequest(false, true) ); - return; + if (key.startsWith(systemKeys.end)) { + if (key == LiteralStringRef("\xff\xff/reboot_worker")){ + BinaryReader::fromStringRef(value, IncludeVersion()).reboot.send( RebootRequest() ); + return; + } + if (key == LiteralStringRef("\xff\xff/suspend_worker")){ + BinaryReader::fromStringRef(value, IncludeVersion()).reboot.send( RebootRequest(false, false, options.timeoutInSeconds) ); + return; + } + if (key == LiteralStringRef("\xff\xff/reboot_and_check_worker")){ + BinaryReader::fromStringRef(value, IncludeVersion()).reboot.send( RebootRequest(false, true) ); + return; + } } if (key == metadataVersionKey) { throw client_invalid_operation(); From f5e7ee23a853479c9f318b02ca17979ae957746c Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Thu, 23 Jul 2020 11:09:59 -0700 Subject: [PATCH 6/9] updated text of fdbcli output --- fdbcli/fdbcli.actor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index b3037e42bb..48dea0235c 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -3254,11 +3254,11 @@ ACTOR Future cli(CLIOptions opt, LineNoise* plinenoise) { } wait( waitForAll(addInterfs) ); if(address_interface.size() == 0) { - printf("\nNo addresses can be killed.\n"); + printf("\nNo addresses can be suspended.\n"); } else if(address_interface.size() == 1) { - printf("\nThe following address can be killed:\n"); + printf("\nThe following address can be suspended:\n"); } else { - printf("\nThe following %zu addresses can be killed:\n", address_interface.size()); + printf("\nThe following %zu addresses can be suspended:\n", address_interface.size()); } for( auto it : address_interface ) { printf("%s\n", printable(it.first).c_str()); From 5a8a8153cebc8def015f25e8849ba30c071d4eca Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Thu, 23 Jul 2020 11:22:16 -0700 Subject: [PATCH 7/9] updated documentation --- documentation/sphinx/source/downloads.rst | 24 +++++++++---------- .../release-notes/release-notes-620.rst | 8 +++++++ fdbcli/fdbcli.actor.cpp | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/documentation/sphinx/source/downloads.rst b/documentation/sphinx/source/downloads.rst index 28d873e764..dabd3cc69b 100644 --- a/documentation/sphinx/source/downloads.rst +++ b/documentation/sphinx/source/downloads.rst @@ -10,38 +10,38 @@ macOS The macOS installation package is supported on macOS 10.7+. It includes the client and (optionally) the server. -* `FoundationDB-6.2.23.pkg `_ +* `FoundationDB-6.2.24.pkg `_ Ubuntu ------ The Ubuntu packages are supported on 64-bit Ubuntu 12.04+, but beware of the Linux kernel bug in Ubuntu 12.x. -* `foundationdb-clients-6.2.23-1_amd64.deb `_ -* `foundationdb-server-6.2.23-1_amd64.deb `_ (depends on the clients package) +* `foundationdb-clients-6.2.24-1_amd64.deb `_ +* `foundationdb-server-6.2.24-1_amd64.deb `_ (depends on the clients package) RHEL/CentOS EL6 --------------- The RHEL/CentOS EL6 packages are supported on 64-bit RHEL/CentOS 6.x. -* `foundationdb-clients-6.2.23-1.el6.x86_64.rpm `_ -* `foundationdb-server-6.2.23-1.el6.x86_64.rpm `_ (depends on the clients package) +* `foundationdb-clients-6.2.24-1.el6.x86_64.rpm `_ +* `foundationdb-server-6.2.24-1.el6.x86_64.rpm `_ (depends on the clients package) RHEL/CentOS EL7 --------------- The RHEL/CentOS EL7 packages are supported on 64-bit RHEL/CentOS 7.x. -* `foundationdb-clients-6.2.23-1.el7.x86_64.rpm `_ -* `foundationdb-server-6.2.23-1.el7.x86_64.rpm `_ (depends on the clients package) +* `foundationdb-clients-6.2.24-1.el7.x86_64.rpm `_ +* `foundationdb-server-6.2.24-1.el7.x86_64.rpm `_ (depends on the clients package) Windows ------- The Windows installer is supported on 64-bit Windows XP and later. It includes the client and (optionally) the server. -* `foundationdb-6.2.23-x64.msi `_ +* `foundationdb-6.2.24-x64.msi `_ API Language Bindings ===================== @@ -58,18 +58,18 @@ On macOS and Windows, the FoundationDB Python API bindings are installed as part If you need to use the FoundationDB Python API from other Python installations or paths, download the Python package: -* `foundationdb-6.2.23.tar.gz `_ +* `foundationdb-6.2.24.tar.gz `_ Ruby 1.9.3/2.0.0+ ----------------- -* `fdb-6.2.23.gem `_ +* `fdb-6.2.24.gem `_ Java 8+ ------- -* `fdb-java-6.2.23.jar `_ -* `fdb-java-6.2.23-javadoc.jar `_ +* `fdb-java-6.2.24.jar `_ +* `fdb-java-6.2.24-javadoc.jar `_ Go 1.11+ -------- diff --git a/documentation/sphinx/source/release-notes/release-notes-620.rst b/documentation/sphinx/source/release-notes/release-notes-620.rst index 12e557c1ff..840272639c 100644 --- a/documentation/sphinx/source/release-notes/release-notes-620.rst +++ b/documentation/sphinx/source/release-notes/release-notes-620.rst @@ -4,6 +4,14 @@ Release Notes ############# +6.2.24 +====== + +Features +-------- + +* Added the ``suspend`` command to ``fdbcli`` which kills a process and prevents it from rejoining the cluster for a specified duration. `(PR #3550) `_ + 6.2.23 ====== diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index 48dea0235c..9ff7efe7ef 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -556,7 +556,7 @@ void initHelp() { helpMap["suspend"] = CommandHelp( "suspend
*", "attempts to suspend one or more processes in the cluster", - "If parameters are specified, populates the list of processes which can be suspended. Processes cannot be suspended before this list has been populated.\n\nFor each IP:port pair in
*, attempt to suspend the processes for the specified SECONDS after which the process will die."); + "If no parameters are specified, populates the list of processes which can be suspended. Processes cannot be suspended before this list has been populated.\n\nFor each IP:port pair in
*, attempt to suspend the processes for the specified SECONDS after which the process will die."); helpMap["profile"] = CommandHelp( " ", "namespace for all the profiling-related commands.", From 52e3db8135b76c3452343a5aae99d4bf28848c0a Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Fri, 24 Jul 2020 11:49:09 -0700 Subject: [PATCH 8/9] update version to 6.2.25 --- CMakeLists.txt | 2 +- versions.target | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90ea98ae33..002c0b7486 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ # limitations under the License. cmake_minimum_required(VERSION 3.12) project(foundationdb - VERSION 6.2.24 + VERSION 6.2.25 DESCRIPTION "FoundationDB is a scalable, fault-tolerant, ordered key-value store with full ACID transactions." HOMEPAGE_URL "http://www.foundationdb.org/" LANGUAGES C CXX ASM) diff --git a/versions.target b/versions.target index fa0b811daf..4c151da97a 100644 --- a/versions.target +++ b/versions.target @@ -1,7 +1,7 @@ - 6.2.24 + 6.2.25 6.2 From 62c26862acbb2150edaa865b4a40c8ce607df9d8 Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Fri, 24 Jul 2020 11:49:09 -0700 Subject: [PATCH 9/9] update installer WIX GUID following release --- packaging/msi/FDBInstaller.wxs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/msi/FDBInstaller.wxs b/packaging/msi/FDBInstaller.wxs index 13fa3d3674..9bdaf48c32 100644 --- a/packaging/msi/FDBInstaller.wxs +++ b/packaging/msi/FDBInstaller.wxs @@ -32,7 +32,7 @@