first draft of adding option to kill processes
This commit is contained in:
parent
d9d1cdc470
commit
ba2c5dd2a6
|
@ -66,6 +66,7 @@ struct MachineAttritionWorkload : TestWorkload {
|
||||||
bool killDc;
|
bool killDc;
|
||||||
bool killMachine;
|
bool killMachine;
|
||||||
bool killDatahall;
|
bool killDatahall;
|
||||||
|
bool killProcess;
|
||||||
bool killSelf;
|
bool killSelf;
|
||||||
Standalone<StringRef> targetId;
|
Standalone<StringRef> targetId;
|
||||||
bool replacement;
|
bool replacement;
|
||||||
|
@ -88,6 +89,7 @@ struct MachineAttritionWorkload : TestWorkload {
|
||||||
killDc = getOption( options, LiteralStringRef("killDc"), deterministicRandom()->random01() < 0.25 );
|
killDc = getOption( options, LiteralStringRef("killDc"), deterministicRandom()->random01() < 0.25 );
|
||||||
killMachine = getOption( options, LiteralStringRef("killMachine"), false);
|
killMachine = getOption( options, LiteralStringRef("killMachine"), false);
|
||||||
killDatahall = getOption( options, LiteralStringRef("killDatahall"), false);
|
killDatahall = getOption( options, LiteralStringRef("killDatahall"), false);
|
||||||
|
killProcess = getOption( options, LiteralStringRef("killProcess"), false);
|
||||||
killSelf = getOption( options, LiteralStringRef("killSelf"), false );
|
killSelf = getOption( options, LiteralStringRef("killSelf"), false );
|
||||||
targetId = getOption( options, LiteralStringRef("targetId"), LiteralStringRef(""));
|
targetId = getOption( options, LiteralStringRef("targetId"), LiteralStringRef(""));
|
||||||
replacement = getOption( options, LiteralStringRef("replacement"), reboot && deterministicRandom()->random01() < 0.5 );
|
replacement = getOption( options, LiteralStringRef("replacement"), reboot && deterministicRandom()->random01() < 0.5 );
|
||||||
|
@ -147,8 +149,7 @@ struct MachineAttritionWorkload : TestWorkload {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool noSimIsViableKill(WorkerDetails worker) {
|
static bool noSimIsViableKill(WorkerDetails worker) {
|
||||||
if (worker.processClass == ProcessClass::ClassType::TesterClass) return false;
|
return (worker.processClass == ProcessClass::ClassType::TesterClass);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTOR static Future<Void> noSimMachineKillWorker(MachineAttritionWorkload *self, Database cx) {
|
ACTOR static Future<Void> noSimMachineKillWorker(MachineAttritionWorkload *self, Database cx) {
|
||||||
|
@ -204,6 +205,17 @@ struct MachineAttritionWorkload : TestWorkload {
|
||||||
worker.interf.clientInterface.reboot.send(rbReq);
|
worker.interf.clientInterface.reboot.send(rbReq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (self->killProcess) {
|
||||||
|
// Pick a process to kill
|
||||||
|
Optional<Standalone<StringRef>> killProcessId = self->targetId.toString().empty() ? workers.back().interf.locality.processId() : self->targetId;
|
||||||
|
TraceEvent("Assassination").detail("TargetProcessId", killProcessId);
|
||||||
|
for (const auto& worker : workers) {
|
||||||
|
// kill matching processes
|
||||||
|
if (worker.interf.locality.processId().present() && worker.interf.locality.processId() == killProcessId) {
|
||||||
|
TraceEvent("SendingRebootRequest").detail("TargetMachine", worker.interf.locality.toString());
|
||||||
|
worker.interf.clientInterface.reboot.send(rbReq);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
while (killedMachines < self->machinesToKill && workers.size() > self->machinesToLeave) {
|
while (killedMachines < self->machinesToKill && workers.size() > self->machinesToLeave) {
|
||||||
TraceEvent("WorkerKillBegin")
|
TraceEvent("WorkerKillBegin")
|
||||||
|
|
Loading…
Reference in New Issue