mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
improve diagnostics of activity shutdown
This commit is contained in:
parent
d1aa85fe3b
commit
6c44dd0062
@ -23,10 +23,7 @@ import io.nosqlbench.engine.api.activityimpl.input.ProgressCapable;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.SynchronousQueue;
|
import java.util.concurrent.SynchronousQueue;
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
@ -357,21 +354,30 @@ public class ActivityExecutor implements ActivityController, ParameterMap.Listen
|
|||||||
* @param m motor instance
|
* @param m motor instance
|
||||||
* @param waitTime milliseconds to wait, total
|
* @param waitTime milliseconds to wait, total
|
||||||
* @param pollTime polling interval between state checks
|
* @param pollTime polling interval between state checks
|
||||||
* @param runState any desired SlotState
|
* @param desiredRunStates any desired SlotState
|
||||||
* @return true, if the desired SlotState was detected
|
* @return true, if the desired SlotState was detected
|
||||||
*/
|
*/
|
||||||
private boolean awaitMotorState(Motor m, int waitTime, int pollTime, RunState... runState) {
|
private boolean awaitMotorState(Motor m, int waitTime, int pollTime, RunState... desiredRunStates) {
|
||||||
|
Set<RunState> desiredStates = new HashSet<>(Arrays.asList(desiredRunStates));
|
||||||
|
|
||||||
long startedAt = System.currentTimeMillis();
|
long startedAt = System.currentTimeMillis();
|
||||||
while (System.currentTimeMillis() < (startedAt + waitTime)) {
|
while (System.currentTimeMillis() < (startedAt + waitTime)) {
|
||||||
for (RunState state : runState) {
|
Map<RunState,Integer> actualStates = new HashMap<>();
|
||||||
if (m.getSlotStateTracker().getSlotState() == state) {
|
for (RunState state : desiredRunStates) {
|
||||||
logger.trace(activityDef.getAlias() + "/Motor[" + m.getSlotId() + "] is now in state " + m.getSlotStateTracker().getSlotState());
|
actualStates.compute(state, (k, v) -> (v == null ? 0 : v) + 1);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
try {
|
for (RunState desiredRunState : desiredRunStates) {
|
||||||
Thread.sleep(pollTime);
|
actualStates.remove(desiredRunState);
|
||||||
} catch (InterruptedException ignored) {
|
}
|
||||||
|
logger.trace("state of remaining slots:" + actualStates.toString());
|
||||||
|
if (actualStates.size()==0) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
System.out.println("motor states:" + actualStates.toString());
|
||||||
|
try {
|
||||||
|
Thread.sleep(pollTime);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.trace(activityDef.getAlias() + "/Motor[" + m.getSlotId() + "] is now in state " + m.getSlotStateTracker().getSlotState());
|
logger.trace(activityDef.getAlias() + "/Motor[" + m.getSlotId() + "] is now in state " + m.getSlotStateTracker().getSlotState());
|
||||||
|
Loading…
Reference in New Issue
Block a user