sklaha commented on code in PR #275:
URL: https://github.com/apache/cassandra-sidecar/pull/275#discussion_r2619912602
##########
adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/jmx/StorageJmxOperations.java:
##########
@@ -233,4 +233,11 @@ public interface StorageJmxOperations
* @return the current compaction throughput in megabytes per second, or 0
if throughput cannot be determined
*/
int getCompactionThroughputMbPerSec();
+
+ /**
+ * Triggers the node move operation to move this node to a new token
+ *
+ * @param newToken the new token for the node to move to
+ */
+ void move(String newToken);
Review Comment:
Updated the method signature. OperationalJob.execute() already handles the
exception. I also added tests for node move failure.
##########
adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/utils/DataTypeUtils.java:
##########
@@ -119,4 +121,28 @@ public static long mebibytesToBytes(long mebibytes)
{
return mebibytes << 20;
}
+
+ /**
+ * Validates whether a string can be parsed as a valid BigInteger.
+ * This method trims whitespace from the input string before validation.
+ *
+ * @param newToken the string to validate as a BigInteger, can be null
+ * @return true if the string can be successfully parsed as a BigInteger,
false if null or invalid
+ */
+ public static boolean isValidBigInt(String newToken)
Review Comment:
I think, OrderPreservingPartitioner is deprecated and token is numeric for
all other partitioners. Please correct me if I am wrong.
##########
server/src/main/java/org/apache/cassandra/sidecar/handlers/NodeMoveHandler.java:
##########
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.sidecar.handlers;
+
+import java.util.Collections;
+import java.util.Set;
+
+import com.datastax.driver.core.utils.UUIDs;
+import com.google.inject.Inject;
+import io.netty.handler.codec.http.HttpResponseStatus;
+import io.vertx.core.http.HttpServerRequest;
+import io.vertx.core.json.DecodeException;
+import io.vertx.core.json.Json;
+import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.auth.authorization.Authorization;
+import io.vertx.ext.web.RoutingContext;
+import org.apache.cassandra.sidecar.acl.authorization.BasicPermissions;
+import org.apache.cassandra.sidecar.adapters.base.utils.DataTypeUtils;
+import org.apache.cassandra.sidecar.common.request.data.NodeMoveRequestPayload;
+import org.apache.cassandra.sidecar.common.server.StorageOperations;
+import org.apache.cassandra.sidecar.common.utils.StringUtils;
+import org.apache.cassandra.sidecar.concurrent.ExecutorPools;
+import org.apache.cassandra.sidecar.config.ServiceConfiguration;
+import org.apache.cassandra.sidecar.job.NodeMoveJob;
+import org.apache.cassandra.sidecar.job.OperationalJobManager;
+import org.apache.cassandra.sidecar.utils.CassandraInputValidator;
+import org.apache.cassandra.sidecar.utils.InstanceMetadataFetcher;
+import org.apache.cassandra.sidecar.utils.OperationalJobUtils;
+import org.jetbrains.annotations.NotNull;
+
+import static
org.apache.cassandra.sidecar.utils.HttpExceptions.wrapHttpException;
+
+/**
+ * Provides REST API for asynchronously moving the corresponding Cassandra
node to a new token
+ */
+public class NodeMoveHandler extends AbstractHandler<String> implements
AccessProtected
Review Comment:
Done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]