public void execute()

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);
        }
    }