package org.radargun.stages.lifecycle;
import java.util.Collection;
import java.util.List;
import org.radargun.DistStageAck;
import org.radargun.StageResult;
import org.radargun.config.Property;
import org.radargun.config.Stage;
import org.radargun.stages.AbstractDistStage;
/**
* Common base for stages that start slaves.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
@Stage(doc = "Parent class for stages handling service start.")
public abstract class AbstractServiceStartStage extends AbstractDistStage {
@Property(doc = "Set of slaves where the start may fail but this will not cause an error. Default is none.")
protected Collection<Integer> mayFailOn;
@Override
public StageResult processAckOnMaster(List<DistStageAck> acks) {
logDurationInfo(acks);
for (DistStageAck ack : acks) {
if (ack.isError() && (mayFailOn == null || !mayFailOn.contains(ack.getSlaveIndex()))) {
log.warn("Received error ack " + ack);
return errorResult();
} else if (ack.isError()) {
log.info("Received allowed error ack " + ack);
} else {
log.trace("Received success ack " + ack);
}
}
if (log.isTraceEnabled())
log.trace("All ack messages were successful");
return StageResult.SUCCESS;
}
}