Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion fdbrpc/include/fdbrpc/simulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,9 @@ FDB_BOOLEAN_PARAM(ForceDisable);
// if the disabling time has been extended. The caller should retry after
// the specified time has elapsed. If flag is true, don't extend the time
// and disable the connection failures immediately.
double disableConnectionFailures(std::string const& context, ForceDisable flag = ForceDisable::True);
double disableConnectionFailures(std::string const& context,
ForceDisable flag = ForceDisable::True,
double duration = DISABLE_CONNECTION_FAILURE_FOREVER);

// Extend connection failures in simulation
void extendConnectionFailures(std::string const& context, double duration);
Expand Down
4 changes: 2 additions & 2 deletions fdbrpc/sim2.actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2996,7 +2996,7 @@ void enableConnectionFailures(std::string const& context, double duration) {
}
}

double disableConnectionFailures(std::string const& context, ForceDisable flag) {
double disableConnectionFailures(std::string const& context, ForceDisable flag, double duration) {
if (g_network->isSimulated()) {
if (now() + DISABLE_CONNECTION_FAILURE_MIN_INTERVAL < g_simulator->connectionFailureDisableTime &&
flag == ForceDisable::False) {
Expand All @@ -3006,7 +3006,7 @@ double disableConnectionFailures(std::string const& context, ForceDisable flag)
return g_simulator->connectionFailureDisableTime - now(); // return remaining time (>0.001s)
} else {
// if remaining time is less than 0.001s, or forced to disable, disable now
g_simulator->connectionFailuresDisableDuration = DISABLE_CONNECTION_FAILURE_FOREVER;
g_simulator->connectionFailuresDisableDuration = duration;
g_simulator->speedUpSimulation = true;
TraceEvent(SevWarnAlways, ("DisableConnectionFailures_" + context).c_str());
return 0;
Expand Down
13 changes: 9 additions & 4 deletions fdbserver/tester.actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2882,14 +2882,19 @@ ACTOR Future<Void> runTests(Reference<AsyncVar<Optional<struct ClusterController
}
}

// Use the first test's connectionFailuresDisableDuration if set, otherwise use the default
state double connectionFailuresDisableDuration = FLOW_KNOBS->SIM_SPEEDUP_AFTER_SECONDS;
// Use the first test's connectionFailuresDisableDuration if set
state double connectionFailuresDisableDuration = 0.0;
if (!tests.empty() && tests[0].simConnectionFailuresDisableDuration > 0) {
connectionFailuresDisableDuration = tests[0].simConnectionFailuresDisableDuration;
}

enableConnectionFailures("Tester", connectionFailuresDisableDuration);
state Future<Void> disabler = disableConnectionFailuresAfter(connectionFailuresDisableDuration, "Tester");
if (connectionFailuresDisableDuration > 0) {
// Disable connection failures forever, irrespective of the actual value
disableConnectionFailures("Tester", ForceDisable::True, connectionFailuresDisableDuration);
} else {
enableConnectionFailures("Tester", FLOW_KNOBS->SIM_SPEEDUP_AFTER_SECONDS);
state Future<Void> disabler = disableConnectionFailuresAfter(FLOW_KNOBS->SIM_SPEEDUP_AFTER_SECONDS, "Tester");
}
state Future<Void> repairDataCenter;
if (useDB) {
// Keep datacenter repair at the default duration regardless of connection failures setting
Expand Down