diff --git a/fdbbackup/backup.actor.cpp b/fdbbackup/backup.actor.cpp index 61a734ecb6..9d27e29c9f 100644 --- a/fdbbackup/backup.actor.cpp +++ b/fdbbackup/backup.actor.cpp @@ -3762,35 +3762,6 @@ int main(int argc, char* argv[]) { } } - IKnobCollection::setGlobalKnobCollection(IKnobCollection::Type::CLIENT, Randomize::False, IsSimulated::False); - auto& g_knobs = IKnobCollection::getMutableGlobalKnobCollection(); - for (const auto& [knobName, knobValueString] : knobs) { - try { - auto knobValue = g_knobs.parseKnobValue(knobName, knobValueString); - g_knobs.setKnob(knobName, knobValue); - } catch (Error& e) { - if (e.code() == error_code_invalid_option_value) { - fprintf(stderr, - "WARNING: Invalid value '%s' for knob option '%s'\n", - knobValueString.c_str(), - knobName.c_str()); - TraceEvent(SevWarnAlways, "InvalidKnobValue") - .detail("Knob", printable(knobName)) - .detail("Value", printable(knobValueString)); - } else { - fprintf(stderr, "ERROR: Failed to set knob option '%s': %s\n", knobName.c_str(), e.what()); - TraceEvent(SevError, "FailedToSetKnob") - .detail("Knob", printable(knobName)) - .detail("Value", printable(knobValueString)) - .error(e); - throw; - } - } - } - - // Reinitialize knobs in order to update knobs that are dependent on explicitly set knobs - g_knobs.initialize(Randomize::False, IsSimulated::False); - if (trace) { if (!traceLogGroup.empty()) setNetworkOption(FDBNetworkOptions::TRACE_LOG_GROUP, StringRef(traceLogGroup)); @@ -3831,6 +3802,34 @@ int main(int argc, char* argv[]) { return FDB_EXIT_ERROR; } + auto& g_knobs = IKnobCollection::getMutableGlobalKnobCollection(); + for (const auto& [knobName, knobValueString] : knobs) { + try { + auto knobValue = g_knobs.parseKnobValue(knobName, knobValueString); + g_knobs.setKnob(knobName, knobValue); + } catch (Error& e) { + if (e.code() == error_code_invalid_option_value) { + fprintf(stderr, + "WARNING: Invalid value '%s' for knob option '%s'\n", + knobValueString.c_str(), + knobName.c_str()); + TraceEvent(SevWarnAlways, "InvalidKnobValue") + .detail("Knob", printable(knobName)) + .detail("Value", printable(knobValueString)); + } else { + fprintf(stderr, "ERROR: Failed to set knob option '%s': %s\n", knobName.c_str(), e.what()); + TraceEvent(SevError, "FailedToSetKnob") + .detail("Knob", printable(knobName)) + .detail("Value", printable(knobValueString)) + .error(e); + throw; + } + } + } + + // Reinitialize knobs in order to update knobs that are dependent on explicitly set knobs + g_knobs.initialize(Randomize::False, IsSimulated::False); + TraceEvent("ProgramStart") .setMaxEventLength(12000) .detail("SourceVersion", getSourceVersion()) diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index 31ac1a4418..f6381f7bff 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -2432,8 +2432,6 @@ int main(int argc, char** argv) { registerCrashHandler(); - IKnobCollection::setGlobalKnobCollection(IKnobCollection::Type::CLIENT, Randomize::False, IsSimulated::False); - #ifdef __unixish__ struct sigaction act; @@ -2548,4 +2546,4 @@ int main(int argc, char** argv) { fprintf(stderr, "ERROR: %s (%d)\n", e.what(), e.code()); return 1; } -} \ No newline at end of file +} diff --git a/fdbclient/NativeAPI.actor.cpp b/fdbclient/NativeAPI.actor.cpp index c365c7bcbb..7cfa78d75d 100644 --- a/fdbclient/NativeAPI.actor.cpp +++ b/fdbclient/NativeAPI.actor.cpp @@ -2150,6 +2150,7 @@ void setupNetwork(uint64_t transportId, UseMetrics useMetrics) { g_network->addStopCallback(TLS::DestroyOpenSSLGlobalState); FlowTransport::createInstance(true, transportId, WLTOKEN_RESERVED_COUNT); Net2FileSystem::newFileSystem(); + IKnobCollection::setGlobalKnobCollection(IKnobCollection::Type::CLIENT, Randomize::False, IsSimulated::False); uncancellable(monitorNetworkBusyness()); }