use of com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.DemoteBrokerRunnable in project cruise-control by linkedin.
the class SlowBrokers method configure.
@Override
public void configure(Map<String, ?> configs) {
super.configure(configs);
KafkaCruiseControl kafkaCruiseControl = extractKafkaCruiseControlObjectFromConfig(configs, KafkaAnomalyType.METRIC_ANOMALY);
if (_fixable) {
Boolean removeSlowBroker = (Boolean) configs.get(SlowBrokerFinder.REMOVE_SLOW_BROKER_CONFIG);
if (removeSlowBroker == null) {
throw new IllegalArgumentException(String.format("Missing %s for slow broker anomaly.", SlowBrokerFinder.REMOVE_SLOW_BROKER_CONFIG));
}
KafkaCruiseControlConfig config = kafkaCruiseControl.config();
boolean allowCapacityEstimation = config.getBoolean(ANOMALY_DETECTION_ALLOW_CAPACITY_ESTIMATION_CONFIG);
boolean excludeRecentlyDemotedBrokers = config.getBoolean(SELF_HEALING_EXCLUDE_RECENTLY_DEMOTED_BROKERS_CONFIG);
boolean excludeRecentlyRemovedBrokers = config.getBoolean(SELF_HEALING_EXCLUDE_RECENTLY_REMOVED_BROKERS_CONFIG);
if (removeSlowBroker) {
_removeBrokersRunnable = new RemoveBrokersRunnable(kafkaCruiseControl, _brokerEntitiesWithDetectionTimeMs.keySet().stream().mapToInt(BrokerEntity::brokerId).boxed().collect(Collectors.toSet()), getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
} else {
_demoteBrokerRunnable = new DemoteBrokerRunnable(kafkaCruiseControl, _brokerEntitiesWithDetectionTimeMs.keySet().stream().mapToInt(BrokerEntity::brokerId).boxed().collect(Collectors.toSet()), allowCapacityEstimation, excludeRecentlyDemotedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
}
}
}
use of com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.DemoteBrokerRunnable in project cruise-control by linkedin.
the class DemoteRequest method handle.
@Override
protected OperationFuture handle(String uuid) {
OperationFuture future = new OperationFuture("Demote");
pending(future.operationProgress());
_asyncKafkaCruiseControl.sessionExecutor().submit(new DemoteBrokerRunnable(_asyncKafkaCruiseControl, future, uuid, _parameters));
return future;
}
use of com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.DemoteBrokerRunnable in project cruise-control by linkedin.
the class MaintenanceEvent method configure.
@Override
public void configure(Map<String, ?> configs) {
super.configure(configs);
KafkaCruiseControl kafkaCruiseControl = extractKafkaCruiseControlObjectFromConfig(configs, MAINTENANCE_EVENT);
KafkaCruiseControlConfig config = kafkaCruiseControl.config();
boolean allowCapacityEstimation = config.getBoolean(ANOMALY_DETECTION_ALLOW_CAPACITY_ESTIMATION_CONFIG);
boolean excludeRecentlyDemotedBrokers = config.getBoolean(SELF_HEALING_EXCLUDE_RECENTLY_DEMOTED_BROKERS_CONFIG);
boolean excludeRecentlyRemovedBrokers = config.getBoolean(SELF_HEALING_EXCLUDE_RECENTLY_REMOVED_BROKERS_CONFIG);
boolean skipRackAwarenessCheck = config.getBoolean(RF_SELF_HEALING_SKIP_RACK_AWARENESS_CHECK_CONFIG);
_optimizationResult = null;
_maintenanceEventType = (MaintenanceEventType) configs.get(MAINTENANCE_EVENT_TYPE_CONFIG);
_stopOngoingExecution = (Boolean) configs.get(MAINTENANCE_EVENT_STOP_ONGOING_EXECUTION_CONFIG);
switch(_maintenanceEventType) {
case ADD_BROKER:
initBrokers(configs);
_goalBasedOperationRunnable = new AddBrokersRunnable(kafkaCruiseControl, _brokers, getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
break;
case REMOVE_BROKER:
initBrokers(configs);
_goalBasedOperationRunnable = new RemoveBrokersRunnable(kafkaCruiseControl, _brokers, getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
break;
case FIX_OFFLINE_REPLICAS:
_goalBasedOperationRunnable = new FixOfflineReplicasRunnable(kafkaCruiseControl, getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
break;
case REBALANCE:
_goalBasedOperationRunnable = new RebalanceRunnable(kafkaCruiseControl, getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
break;
case DEMOTE_BROKER:
initBrokers(configs);
_goalBasedOperationRunnable = new DemoteBrokerRunnable(kafkaCruiseControl, _brokers, allowCapacityEstimation, excludeRecentlyDemotedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution());
break;
case TOPIC_REPLICATION_FACTOR:
Map<Short, Pattern> topicPatternByReplicationFactor = topicPatternByReplicationFactor(configs);
_goalBasedOperationRunnable = new UpdateTopicConfigurationRunnable(kafkaCruiseControl, topicPatternByReplicationFactor, getSelfHealingGoalNames(config), allowCapacityEstimation, excludeRecentlyDemotedBrokers, excludeRecentlyRemovedBrokers, _anomalyId.toString(), reasonSupplier(), stopOngoingExecution(), skipRackAwarenessCheck);
break;
default:
throw new IllegalStateException(String.format("Unsupported maintenance event type %s.", _maintenanceEventType));
}
}
Aggregations