_manager = manager;
}
@Override
public HelixTaskResult handleMessage() throws InterruptedException {
HelixTaskResult result = new HelixTaskResult();
result.setSuccess(true);
// TODO : consider unify this with StatsAggregationStage.executeAlertActions()
try {
ActionOnError actionOnError =
ActionOnError.valueOf(_message.getRecord().getSimpleField(ACTIONKEY));
if (actionOnError == ActionOnError.DISABLE_INSTANCE) {
_manager.getClusterManagmentTool().enableInstance(_manager.getClusterName(),
_message.getMsgSrc(), false);
_logger.info("Instance " + _message.getMsgSrc() + " disabled");
} else if (actionOnError == ActionOnError.DISABLE_PARTITION) {
_manager.getClusterManagmentTool().enablePartition(false, _manager.getClusterName(),
_message.getMsgSrc(), _message.getResourceName(),
Arrays.asList(_message.getPartitionName()));
_logger.info("partition " + _message.getPartitionName() + " disabled");
} else if (actionOnError == ActionOnError.DISABLE_RESOURCE) {
// NOT IMPLEMENTED, or we can disable all partitions
// _manager.getClusterManagmentTool().en(_manager.getClusterName(),
// _manager.getInstanceName(),
// _message.getResourceName(), _message.getPartitionName(), false);
_logger.info("resource " + _message.getResourceName() + " disabled");
}
} catch (Exception e) {
_logger.error("", e);
result.setSuccess(false);
result.setException(e);
}
return result;
}