You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2014/05/09 00:25:02 UTC
svn commit: r1593439 [1/3] - in /hbase/trunk:
hbase-client/src/main/java/org/apache/hadoop/hbase/client/
hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/
hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/
hbase-protocol/src/main/...
Author: mbertozzi
Date: Thu May 8 22:25:01 2014
New Revision: 1593439
URL: http://svn.apache.org/r1593439
Log:
HBASE-8332 Add truncate as HMaster method
Added:
hbase/trunk/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/TruncateTableAction.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TruncateTableHandler.java
Modified:
hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
hbase/trunk/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/MasterProtos.java
hbase/trunk/hbase-protocol/src/main/protobuf/Master.proto
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/CreateTableHandler.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java
hbase/trunk/hbase-shell/src/main/ruby/hbase/admin.rb
Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java?rev=1593439&r1=1593438&r2=1593439&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java Thu May 8 22:25:01 2014
@@ -230,6 +230,17 @@ public interface Admin extends Abortable
HTableDescriptor[] deleteTables(Pattern pattern) throws IOException;
/**
+ * Truncate a table.
+ * Synchronous operation.
+ *
+ * @param tableName name of table to truncate
+ * @param preserveSplits True if the splits should be preserved
+ * @throws IOException if a remote or network exception occurs
+ */
+ public void truncateTable(final TableName tableName, final boolean preserveSplits)
+ throws IOException;
+
+ /**
* Enable a table. May timeout. Use {@link #enableTableAsync(org.apache.hadoop.hbase.TableName)}
* and {@link #isTableEnabled(org.apache.hadoop.hbase.TableName)} instead. The table has to be in
* disabled state for it to be enabled.
Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java?rev=1593439&r1=1593438&r2=1593439&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java Thu May 8 22:25:01 2014
@@ -1760,6 +1760,12 @@ class ConnectionManager {
}
@Override
+ public TruncateTableResponse truncateTable(RpcController controller,
+ TruncateTableRequest request) throws ServiceException {
+ return stub.truncateTable(controller, request);
+ }
+
+ @Override
public EnableTableResponse enableTable(RpcController controller,
EnableTableRequest request) throws ServiceException {
return stub.enableTable(controller, request);
Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1593439&r1=1593438&r2=1593439&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java Thu May 8 22:25:01 2014
@@ -126,6 +126,8 @@ import org.apache.hadoop.hbase.protobuf.
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SnapshotRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SnapshotResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.StopMasterRequest;
+import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.TruncateTableRequest;
+import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.TruncateTableResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.UnassignRegionRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ExecProcedureRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ExecProcedureResponse;
@@ -762,6 +764,26 @@ public class HBaseAdmin implements Admin
return failed.toArray(new HTableDescriptor[failed.size()]);
}
+ /**
+ * Truncate a table.
+ * Synchronous operation.
+ *
+ * @param tableName name of table to truncate
+ * @param preserveSplits True if the splits should be preserved
+ * @throws IOException if a remote or network exception occurs
+ */
+ public void truncateTable(final TableName tableName, final boolean preserveSplits)
+ throws IOException {
+ executeCallable(new MasterCallable<Void>(getConnection()) {
+ @Override
+ public Void call(int callTimeout) throws ServiceException {
+ TruncateTableRequest req = RequestConverter.buildTruncateTableRequest(
+ tableName, preserveSplits);
+ master.truncateTable(null, req);
+ return null;
+ }
+ });
+ }
/**
* Enable a table. May timeout. Use {@link #enableTableAsync(byte[])}
Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java?rev=1593439&r1=1593438&r2=1593439&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java Thu May 8 22:25:01 2014
@@ -97,6 +97,7 @@ import org.apache.hadoop.hbase.protobuf.
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.OfflineRegionRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RunCatalogScanRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SetBalancerRunningRequest;
+import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.TruncateTableRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.UnassignRegionRequest;
import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdRequest;
import org.apache.hadoop.hbase.util.Bytes;
@@ -1086,6 +1087,21 @@ public final class RequestConverter {
}
/**
+ * Creates a protocol buffer TruncateTableRequest
+ *
+ * @param tableName name of table to truncate
+ * @param preserveSplits True if the splits should be preserved
+ * @return a TruncateTableRequest
+ */
+ public static TruncateTableRequest buildTruncateTableRequest(final TableName tableName,
+ boolean preserveSplits) {
+ TruncateTableRequest.Builder builder = TruncateTableRequest.newBuilder();
+ builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
+ builder.setPreserveSplits(preserveSplits);
+ return builder.build();
+ }
+
+ /**
* Creates a protocol buffer EnableTableRequest
*
* @param tableName
Added: hbase/trunk/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/TruncateTableAction.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/TruncateTableAction.java?rev=1593439&view=auto
==============================================================================
--- hbase/trunk/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/TruncateTableAction.java (added)
+++ hbase/trunk/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/TruncateTableAction.java Thu May 8 22:25:01 2014
@@ -0,0 +1,49 @@
+/**
+ * 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.hadoop.hbase.chaos.actions;
+
+import java.util.Random;
+
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.TableName;
+
+/**
+ * Action that tries to truncate of a table.
+ */
+public class TruncateTableAction extends Action {
+ private final TableName tableName;
+ private final Random random;
+
+ public TruncateTableAction(String tableName) {
+ this.tableName = TableName.valueOf(tableName);
+ this.random = new Random();
+ }
+
+ @Override
+ public void perform() throws Exception {
+ HBaseTestingUtility util = context.getHBaseIntegrationTestingUtility();
+ HBaseAdmin admin = util.getHBaseAdmin();
+
+ boolean preserveSplits = random.nextBoolean();
+ LOG.info("Performing action: Truncate table " + tableName.getNameAsString() +
+ "preserve splits " + preserveSplits);
+ admin.truncateTable(tableName, preserveSplits);
+ }
+}