in src/java/org/apache/cassandra/tools/nodetool/SetAutoRepairConfig.java [68:177]
public void execute(NodeProbe probe)
{
checkArgument(args.size() == 2, "setautorepairconfig requires param-type, and value args.");
String paramType = args.get(0);
String paramVal = args.get(1);
if (probe.isAutoRepairDisabled() && !paramType.equalsIgnoreCase("start_scheduler"))
{
out.println("Auto-repair is not enabled");
return;
}
// options that do not require --repair-type option
switch (paramType)
{
case "start_scheduler":
if (Boolean.parseBoolean(paramVal))
{
probe.startAutoRepairScheduler();
}
return;
case "history_clear_delete_hosts_buffer_interval":
probe.setAutoRepairHistoryClearDeleteHostsBufferDuration(paramVal);
return;
case "min_repair_task_duration":
probe.setAutoRepairMinRepairTaskDuration(paramVal);
return;
default:
// proceed to options that require --repair-type option
break;
}
// options below require --repair-type option
Objects.requireNonNull(repairTypeStr, "--repair-type is required for this parameter.");
if(paramType.startsWith(TOKEN_RANGE_SPLITTER_PROPERTY_PREFIX))
{
final String key = paramType.replace(TOKEN_RANGE_SPLITTER_PROPERTY_PREFIX, "");
probe.setAutoRepairTokenRangeSplitterParameter(repairTypeStr, key, paramVal);
return;
}
switch (paramType)
{
case "enabled":
probe.setAutoRepairEnabled(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "number_of_repair_threads":
probe.setAutoRepairThreads(repairTypeStr, Integer.parseInt(paramVal));
break;
case "min_repair_interval":
probe.setAutoRepairMinInterval(repairTypeStr, paramVal);
break;
case "sstable_upper_threshold":
probe.setAutoRepairSSTableCountHigherThreshold(repairTypeStr, Integer.parseInt(paramVal));
break;
case "table_max_repair_time":
probe.setAutoRepairTableMaxRepairTime(repairTypeStr, paramVal);
break;
case "priority_hosts":
if (paramVal!= null && !paramVal.isEmpty())
{
probe.setAutoRepairPriorityForHosts(repairTypeStr, paramVal);
}
break;
case "forcerepair_hosts":
probe.setAutoRepairForceRepairForHosts(repairTypeStr, paramVal);
break;
case "ignore_dcs":
Set<String> ignoreDCs = new HashSet<>();
for (String dc : Splitter.on(',').split(paramVal))
{
ignoreDCs.add(dc);
}
probe.setAutoRepairIgnoreDCs(repairTypeStr, ignoreDCs);
break;
case "repair_primary_token_range_only":
probe.setAutoRepairPrimaryTokenRangeOnly(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "parallel_repair_count":
probe.setAutoRepairParallelRepairCount(repairTypeStr, Integer.parseInt(paramVal));
break;
case "parallel_repair_percentage":
probe.setAutoRepairParallelRepairPercentage(repairTypeStr, Integer.parseInt(paramVal));
break;
case "allow_parallel_replica_repair":
probe.setAutoRepairAllowParallelReplicaRepair(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "allow_parallel_replica_repair_across_schedules":
probe.setAutoRepairAllowParallelReplicaRepairAcrossSchedules(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "materialized_view_repair_enabled":
probe.setAutoRepairMaterializedViewRepairEnabled(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "repair_session_timeout":
probe.setAutoRepairSessionTimeout(repairTypeStr, paramVal);
break;
case "repair_by_keyspace":
probe.setAutoRepairRepairByKeyspace(repairTypeStr, Boolean.parseBoolean(paramVal));
break;
case "repair_max_retries":
probe.setAutoRepairMaxRetriesCount(repairTypeStr, Integer.parseInt(paramVal));
break;
case "repair_retry_backoff":
probe.setAutoRepairRetryBackoff(repairTypeStr, paramVal);
break;
default:
throw new IllegalArgumentException("Unknown parameter: " + paramType);
}
}