StorageService: Fix scrub() variant API wiring

The 'nodetool scrub' command ends up calling the variant that is not
wired up to the Scylla API which causes the following error to be
printed out to the user:

  [penberg@nero scylla-tools-java]$ ./bin/nodetool scrub
  error: For input string: ""
  -- StackTrace --
  java.lang.NumberFormatException: For input string: ""
          at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
          at java.lang.Integer.parseInt(Integer.java:592)
          at java.lang.Integer.parseInt(Integer.java:615)
          at com.scylladb.jmx.api.APIClient.getIntValue(APIClient.java:216)
          at com.scylladb.jmx.api.APIClient.getIntValue(APIClient.java:220)
          at org.apache.cassandra.service.StorageService.scrub(StorageService.java:1291)

Fix the problem by implementing the said scrub() variant.
Message-Id: <1458035736-26349-1-git-send-email-penberg@scylladb.com>

(cherry picked from commit 2cd5a5f048)
This commit is contained in:
Pekka Enberg 2016-03-15 11:55:36 +02:00
parent 9c9d879a48
commit 9718d87e80

View File

@ -549,6 +549,15 @@ public class StorageService extends NotificationBroadcasterSupport
String keyspaceName, String... columnFamilies) throws IOException, String keyspaceName, String... columnFamilies) throws IOException,
ExecutionException, InterruptedException { ExecutionException, InterruptedException {
log(" scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); log(" scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException");
return scrub(disableSnapshot, skipCorrupted, true, keyspaceName, columnFamilies);
}
@Override
public int scrub(boolean disableSnapshot, boolean skipCorrupted,
boolean checkData, String keyspaceName, String... columnFamilies)
throws IOException, ExecutionException,
InterruptedException {
log(" scrub(boolean disableSnapshot, boolean skipCorrupted, bool checkData, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException");
MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>(); MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>();
APIClient.set_bool_query_param(queryParams, "disable_snapshot", APIClient.set_bool_query_param(queryParams, "disable_snapshot",
disableSnapshot); disableSnapshot);
@ -1281,16 +1290,6 @@ public class StorageService extends NotificationBroadcasterSupport
log(" takeMultipleColumnFamilySnapshot"); log(" takeMultipleColumnFamilySnapshot");
} }
@Override
public int scrub(boolean disableSnapshot, boolean skipCorrupted,
boolean checkData, String keyspaceName, String... columnFamilies)
throws IOException, ExecutionException,
InterruptedException {
// TODO Auto-generated method stub
log(" scrub()");
return c.getIntValue("");
}
@Override @Override
public int forceRepairAsync(String keyspace, int parallelismDegree, public int forceRepairAsync(String keyspace, int parallelismDegree,
Collection<String> dataCenters, Collection<String> hosts, Collection<String> dataCenters, Collection<String> hosts,