diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java index 5810b2b..dff0581 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java @@ -22,6 +22,7 @@ import java.io.Closeable; import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.Future; import java.util.regex.Pattern; @@ -1553,4 +1554,14 @@ public interface Admin extends Abortable, Closeable { SPLIT, MERGE } + + /** + * Clear compacting queues on a regionserver. + * @param sn the region server name + * @param queues the set of queue name + * @throws IOException if a remote or network exception occurs + * @throws InterruptedException + */ + void clearCompactionQueues(final ServerName sn, final Set queues) + throws IOException, InterruptedException; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 6aed027..5a0cb35 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -31,6 +31,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -80,6 +81,7 @@ import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.RequestConverter; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionResponse; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest; @@ -4889,6 +4891,24 @@ public class HBaseAdmin implements Admin { }); } + @Override + public void clearCompactionQueues(ServerName sn, Set queues) + throws IOException, InterruptedException { + if (queues == null || queues.size() == 0) { + throw new IllegalArgumentException("queues cannot be null or empty"); + } + HBaseRpcController controller = rpcControllerFactory.newController(); + AdminService.BlockingInterface admin = this.connection.getAdmin(sn); + ClearCompactionQueuesRequest request = + RequestConverter.buildClearCompactionQueuesRequest(queues); + try { + // TODO: this does not do retries, it should. Set priority and timeout in controller + admin.clearCompactionQueues(controller, request); + } catch (ServiceException se) { + throw ProtobufUtil.getRemoteException(se); + } + } + private RpcControllerFactory getRpcControllerFactory() { return rpcControllerFactory; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java index 8163130..a4f4b59 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.protobuf; import java.io.IOException; import java.util.List; +import java.util.Set; import java.util.regex.Pattern; import org.apache.hadoop.hbase.classification.InterfaceAudience; @@ -46,6 +47,7 @@ import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.exceptions.DeserializationException; import org.apache.hadoop.hbase.filter.ByteArrayComparable; import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.FlushRegionRequest; @@ -1819,4 +1821,12 @@ public final class RequestConverter { } throw new UnsupportedOperationException("Unsupport switch type:" + switchType); } + + public static ClearCompactionQueuesRequest buildClearCompactionQueuesRequest(Set queues) { + ClearCompactionQueuesRequest.Builder builder = ClearCompactionQueuesRequest.newBuilder(); + for(String name: queues) { + builder.addQueueName(name); + } + return builder.build(); + } } diff --git a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java index 1c59ea6..3c24e33 100644 --- a/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java +++ b/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java @@ -22420,6 +22420,876 @@ public final class AdminProtos { // @@protoc_insertion_point(class_scope:hbase.pb.UpdateConfigurationResponse) } + public interface ClearCompactionQueuesRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated string queue_name = 1; + /** + * repeated string queue_name = 1; + */ + java.util.List + getQueueNameList(); + /** + * repeated string queue_name = 1; + */ + int getQueueNameCount(); + /** + * repeated string queue_name = 1; + */ + java.lang.String getQueueName(int index); + /** + * repeated string queue_name = 1; + */ + com.google.protobuf.ByteString + getQueueNameBytes(int index); + } + /** + * Protobuf type {@code hbase.pb.ClearCompactionQueuesRequest} + */ + public static final class ClearCompactionQueuesRequest extends + com.google.protobuf.GeneratedMessage + implements ClearCompactionQueuesRequestOrBuilder { + // Use ClearCompactionQueuesRequest.newBuilder() to construct. + private ClearCompactionQueuesRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private ClearCompactionQueuesRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final ClearCompactionQueuesRequest defaultInstance; + public static ClearCompactionQueuesRequest getDefaultInstance() { + return defaultInstance; + } + + public ClearCompactionQueuesRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ClearCompactionQueuesRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + queueName_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + queueName_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + queueName_ = new com.google.protobuf.UnmodifiableLazyStringList(queueName_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.class, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ClearCompactionQueuesRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ClearCompactionQueuesRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + // repeated string queue_name = 1; + public static final int QUEUE_NAME_FIELD_NUMBER = 1; + private com.google.protobuf.LazyStringList queueName_; + /** + * repeated string queue_name = 1; + */ + public java.util.List + getQueueNameList() { + return queueName_; + } + /** + * repeated string queue_name = 1; + */ + public int getQueueNameCount() { + return queueName_.size(); + } + /** + * repeated string queue_name = 1; + */ + public java.lang.String getQueueName(int index) { + return queueName_.get(index); + } + /** + * repeated string queue_name = 1; + */ + public com.google.protobuf.ByteString + getQueueNameBytes(int index) { + return queueName_.getByteString(index); + } + + private void initFields() { + queueName_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < queueName_.size(); i++) { + output.writeBytes(1, queueName_.getByteString(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < queueName_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeBytesSizeNoTag(queueName_.getByteString(i)); + } + size += dataSize; + size += 1 * getQueueNameList().size(); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest)) { + return super.equals(obj); + } + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest other = (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest) obj; + + boolean result = true; + result = result && getQueueNameList() + .equals(other.getQueueNameList()); + result = result && + getUnknownFields().equals(other.getUnknownFields()); + return result; + } + + private int memoizedHashCode = 0; + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptorForType().hashCode(); + if (getQueueNameCount() > 0) { + hash = (37 * hash) + QUEUE_NAME_FIELD_NUMBER; + hash = (53 * hash) + getQueueNameList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code hbase.pb.ClearCompactionQueuesRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.class, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.Builder.class); + } + + // Construct using org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + queueName_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor; + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest getDefaultInstanceForType() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.getDefaultInstance(); + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest build() { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest buildPartial() { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest result = new org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + queueName_ = new com.google.protobuf.UnmodifiableLazyStringList( + queueName_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.queueName_ = queueName_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest) { + return mergeFrom((org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest other) { + if (other == org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.getDefaultInstance()) return this; + if (!other.queueName_.isEmpty()) { + if (queueName_.isEmpty()) { + queueName_ = other.queueName_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureQueueNameIsMutable(); + queueName_.addAll(other.queueName_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // repeated string queue_name = 1; + private com.google.protobuf.LazyStringList queueName_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureQueueNameIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + queueName_ = new com.google.protobuf.LazyStringArrayList(queueName_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string queue_name = 1; + */ + public java.util.List + getQueueNameList() { + return java.util.Collections.unmodifiableList(queueName_); + } + /** + * repeated string queue_name = 1; + */ + public int getQueueNameCount() { + return queueName_.size(); + } + /** + * repeated string queue_name = 1; + */ + public java.lang.String getQueueName(int index) { + return queueName_.get(index); + } + /** + * repeated string queue_name = 1; + */ + public com.google.protobuf.ByteString + getQueueNameBytes(int index) { + return queueName_.getByteString(index); + } + /** + * repeated string queue_name = 1; + */ + public Builder setQueueName( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureQueueNameIsMutable(); + queueName_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string queue_name = 1; + */ + public Builder addQueueName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureQueueNameIsMutable(); + queueName_.add(value); + onChanged(); + return this; + } + /** + * repeated string queue_name = 1; + */ + public Builder addAllQueueName( + java.lang.Iterable values) { + ensureQueueNameIsMutable(); + super.addAll(values, queueName_); + onChanged(); + return this; + } + /** + * repeated string queue_name = 1; + */ + public Builder clearQueueName() { + queueName_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string queue_name = 1; + */ + public Builder addQueueNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureQueueNameIsMutable(); + queueName_.add(value); + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:hbase.pb.ClearCompactionQueuesRequest) + } + + static { + defaultInstance = new ClearCompactionQueuesRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:hbase.pb.ClearCompactionQueuesRequest) + } + + public interface ClearCompactionQueuesResponseOrBuilder + extends com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code hbase.pb.ClearCompactionQueuesResponse} + */ + public static final class ClearCompactionQueuesResponse extends + com.google.protobuf.GeneratedMessage + implements ClearCompactionQueuesResponseOrBuilder { + // Use ClearCompactionQueuesResponse.newBuilder() to construct. + private ClearCompactionQueuesResponse(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private ClearCompactionQueuesResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final ClearCompactionQueuesResponse defaultInstance; + public static ClearCompactionQueuesResponse getDefaultInstance() { + return defaultInstance; + } + + public ClearCompactionQueuesResponse getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ClearCompactionQueuesResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.class, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ClearCompactionQueuesResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ClearCompactionQueuesResponse(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private void initFields() { + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse)) { + return super.equals(obj); + } + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse other = (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse) obj; + + boolean result = true; + result = result && + getUnknownFields().equals(other.getUnknownFields()); + return result; + } + + private int memoizedHashCode = 0; + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptorForType().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code hbase.pb.ClearCompactionQueuesResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.class, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.Builder.class); + } + + // Construct using org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor; + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse getDefaultInstanceForType() { + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance(); + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse build() { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse buildPartial() { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse result = new org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse(this); + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse) { + return mergeFrom((org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse other) { + if (other == org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + // @@protoc_insertion_point(builder_scope:hbase.pb.ClearCompactionQueuesResponse) + } + + static { + defaultInstance = new ClearCompactionQueuesResponse(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:hbase.pb.ClearCompactionQueuesResponse) + } + /** * Protobuf service {@code hbase.pb.AdminService} */ @@ -22564,6 +23434,14 @@ public final class AdminProtos { org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest request, com.google.protobuf.RpcCallback done); + /** + * rpc ClearCompactionQueues(.hbase.pb.ClearCompactionQueuesRequest) returns (.hbase.pb.ClearCompactionQueuesResponse); + */ + public abstract void clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request, + com.google.protobuf.RpcCallback done); + } public static com.google.protobuf.Service newReflectiveService( @@ -22705,6 +23583,14 @@ public final class AdminProtos { impl.updateConfiguration(controller, request, done); } + @java.lang.Override + public void clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request, + com.google.protobuf.RpcCallback done) { + impl.clearCompactionQueues(controller, request, done); + } + }; } @@ -22761,6 +23647,8 @@ public final class AdminProtos { return impl.updateFavoredNodes(controller, (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest)request); case 16: return impl.updateConfiguration(controller, (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest)request); + case 17: + return impl.clearCompactionQueues(controller, (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest)request); default: throw new java.lang.AssertionError("Can't get here."); } @@ -22809,6 +23697,8 @@ public final class AdminProtos { return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest.getDefaultInstance(); case 16: return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest.getDefaultInstance(); + case 17: + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.getDefaultInstance(); default: throw new java.lang.AssertionError("Can't get here."); } @@ -22857,6 +23747,8 @@ public final class AdminProtos { return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse.getDefaultInstance(); case 16: return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse.getDefaultInstance(); + case 17: + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance(); default: throw new java.lang.AssertionError("Can't get here."); } @@ -23001,6 +23893,14 @@ public final class AdminProtos { org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest request, com.google.protobuf.RpcCallback done); + /** + * rpc ClearCompactionQueues(.hbase.pb.ClearCompactionQueuesRequest) returns (.hbase.pb.ClearCompactionQueuesResponse); + */ + public abstract void clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request, + com.google.protobuf.RpcCallback done); + public static final com.google.protobuf.Descriptors.ServiceDescriptor getDescriptor() { @@ -23108,6 +24008,11 @@ public final class AdminProtos { com.google.protobuf.RpcUtil.specializeCallback( done)); return; + case 17: + this.clearCompactionQueues(controller, (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest)request, + com.google.protobuf.RpcUtil.specializeCallback( + done)); + return; default: throw new java.lang.AssertionError("Can't get here."); } @@ -23156,6 +24061,8 @@ public final class AdminProtos { return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest.getDefaultInstance(); case 16: return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest.getDefaultInstance(); + case 17: + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest.getDefaultInstance(); default: throw new java.lang.AssertionError("Can't get here."); } @@ -23204,6 +24111,8 @@ public final class AdminProtos { return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse.getDefaultInstance(); case 16: return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse.getDefaultInstance(); + case 17: + return org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance(); default: throw new java.lang.AssertionError("Can't get here."); } @@ -23479,6 +24388,21 @@ public final class AdminProtos { org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse.class, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse.getDefaultInstance())); } + + public void clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request, + com.google.protobuf.RpcCallback done) { + channel.callMethod( + getDescriptor().getMethods().get(17), + controller, + request, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance(), + com.google.protobuf.RpcUtil.generalizeCallback( + done, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.class, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance())); + } } public static BlockingInterface newBlockingStub( @@ -23571,6 +24495,11 @@ public final class AdminProtos { com.google.protobuf.RpcController controller, org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest request) throws com.google.protobuf.ServiceException; + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request) + throws com.google.protobuf.ServiceException; } private static final class BlockingStub implements BlockingInterface { @@ -23783,6 +24712,18 @@ public final class AdminProtos { org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse.getDefaultInstance()); } + + public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse clearCompactionQueues( + com.google.protobuf.RpcController controller, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest request) + throws com.google.protobuf.ServiceException { + return (org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse) channel.callBlockingMethod( + getDescriptor().getMethods().get(17), + controller, + request, + org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse.getDefaultInstance()); + } + } // @@protoc_insertion_point(class_scope:hbase.pb.AdminService) @@ -23968,6 +24909,16 @@ public final class AdminProtos { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_hbase_pb_UpdateConfigurationResponse_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_hbase_pb_ClearCompactionQueuesRequest_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_hbase_pb_ClearCompactionQueuesResponse_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -24051,44 +25002,49 @@ public final class AdminProtos { "ui_port\030\002 \001(\r\"B\n\025GetServerInfoResponse\022)" + "\n\013server_info\030\001 \002(\0132\024.hbase.pb.ServerInf" + "o\"\034\n\032UpdateConfigurationRequest\"\035\n\033Updat" + - "eConfigurationResponse2\207\013\n\014AdminService\022" + - "P\n\rGetRegionInfo\022\036.hbase.pb.GetRegionInf" + - "oRequest\032\037.hbase.pb.GetRegionInfoRespons" + - "e\022M\n\014GetStoreFile\022\035.hbase.pb.GetStoreFil" + - "eRequest\032\036.hbase.pb.GetStoreFileResponse" + - "\022V\n\017GetOnlineRegion\022 .hbase.pb.GetOnline", - "RegionRequest\032!.hbase.pb.GetOnlineRegion" + - "Response\022G\n\nOpenRegion\022\033.hbase.pb.OpenRe" + - "gionRequest\032\034.hbase.pb.OpenRegionRespons" + - "e\022M\n\014WarmupRegion\022\035.hbase.pb.WarmupRegio" + - "nRequest\032\036.hbase.pb.WarmupRegionResponse" + - "\022J\n\013CloseRegion\022\034.hbase.pb.CloseRegionRe" + - "quest\032\035.hbase.pb.CloseRegionResponse\022J\n\013" + - "FlushRegion\022\034.hbase.pb.FlushRegionReques" + - "t\032\035.hbase.pb.FlushRegionResponse\022J\n\013Spli" + - "tRegion\022\034.hbase.pb.SplitRegionRequest\032\035.", - "hbase.pb.SplitRegionResponse\022P\n\rCompactR" + - "egion\022\036.hbase.pb.CompactRegionRequest\032\037." + - "hbase.pb.CompactRegionResponse\022M\n\014MergeR" + - "egions\022\035.hbase.pb.MergeRegionsRequest\032\036." + - "hbase.pb.MergeRegionsResponse\022\\\n\021Replica" + - "teWALEntry\022\".hbase.pb.ReplicateWALEntryR" + - "equest\032#.hbase.pb.ReplicateWALEntryRespo" + - "nse\022Q\n\006Replay\022\".hbase.pb.ReplicateWALEnt" + - "ryRequest\032#.hbase.pb.ReplicateWALEntryRe" + - "sponse\022P\n\rRollWALWriter\022\036.hbase.pb.RollW", - "ALWriterRequest\032\037.hbase.pb.RollWALWriter" + - "Response\022P\n\rGetServerInfo\022\036.hbase.pb.Get" + - "ServerInfoRequest\032\037.hbase.pb.GetServerIn" + - "foResponse\022G\n\nStopServer\022\033.hbase.pb.Stop" + - "ServerRequest\032\034.hbase.pb.StopServerRespo" + - "nse\022_\n\022UpdateFavoredNodes\022#.hbase.pb.Upd" + - "ateFavoredNodesRequest\032$.hbase.pb.Update" + - "FavoredNodesResponse\022b\n\023UpdateConfigurat" + - "ion\022$.hbase.pb.UpdateConfigurationReques" + - "t\032%.hbase.pb.UpdateConfigurationResponse", - "BA\n*org.apache.hadoop.hbase.protobuf.gen" + - "eratedB\013AdminProtosH\001\210\001\001\240\001\001" + "eConfigurationResponse\"2\n\034ClearCompactio" + + "nQueuesRequest\022\022\n\nqueue_name\030\001 \003(\t\"\037\n\035Cl" + + "earCompactionQueuesResponse2\361\013\n\014AdminSer" + + "vice\022P\n\rGetRegionInfo\022\036.hbase.pb.GetRegi" + + "onInfoRequest\032\037.hbase.pb.GetRegionInfoRe" + + "sponse\022M\n\014GetStoreFile\022\035.hbase.pb.GetSto", + "reFileRequest\032\036.hbase.pb.GetStoreFileRes" + + "ponse\022V\n\017GetOnlineRegion\022 .hbase.pb.GetO" + + "nlineRegionRequest\032!.hbase.pb.GetOnlineR" + + "egionResponse\022G\n\nOpenRegion\022\033.hbase.pb.O" + + "penRegionRequest\032\034.hbase.pb.OpenRegionRe" + + "sponse\022M\n\014WarmupRegion\022\035.hbase.pb.Warmup" + + "RegionRequest\032\036.hbase.pb.WarmupRegionRes" + + "ponse\022J\n\013CloseRegion\022\034.hbase.pb.CloseReg" + + "ionRequest\032\035.hbase.pb.CloseRegionRespons" + + "e\022J\n\013FlushRegion\022\034.hbase.pb.FlushRegionR", + "equest\032\035.hbase.pb.FlushRegionResponse\022J\n" + + "\013SplitRegion\022\034.hbase.pb.SplitRegionReque" + + "st\032\035.hbase.pb.SplitRegionResponse\022P\n\rCom" + + "pactRegion\022\036.hbase.pb.CompactRegionReque" + + "st\032\037.hbase.pb.CompactRegionResponse\022M\n\014M" + + "ergeRegions\022\035.hbase.pb.MergeRegionsReque" + + "st\032\036.hbase.pb.MergeRegionsResponse\022\\\n\021Re" + + "plicateWALEntry\022\".hbase.pb.ReplicateWALE" + + "ntryRequest\032#.hbase.pb.ReplicateWALEntry" + + "Response\022Q\n\006Replay\022\".hbase.pb.ReplicateW", + "ALEntryRequest\032#.hbase.pb.ReplicateWALEn" + + "tryResponse\022P\n\rRollWALWriter\022\036.hbase.pb." + + "RollWALWriterRequest\032\037.hbase.pb.RollWALW" + + "riterResponse\022P\n\rGetServerInfo\022\036.hbase.p" + + "b.GetServerInfoRequest\032\037.hbase.pb.GetSer" + + "verInfoResponse\022G\n\nStopServer\022\033.hbase.pb" + + ".StopServerRequest\032\034.hbase.pb.StopServer" + + "Response\022_\n\022UpdateFavoredNodes\022#.hbase.p" + + "b.UpdateFavoredNodesRequest\032$.hbase.pb.U" + + "pdateFavoredNodesResponse\022b\n\023UpdateConfi", + "guration\022$.hbase.pb.UpdateConfigurationR" + + "equest\032%.hbase.pb.UpdateConfigurationRes" + + "ponse\022h\n\025ClearCompactionQueues\022&.hbase.p" + + "b.ClearCompactionQueuesRequest\032\'.hbase.p" + + "b.ClearCompactionQueuesResponseBA\n*org.a" + + "pache.hadoop.hbase.protobuf.generatedB\013A" + + "dminProtosH\001\210\001\001\240\001\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -24311,6 +25267,18 @@ public final class AdminProtos { com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_hbase_pb_UpdateConfigurationResponse_descriptor, new java.lang.String[] { }); + internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor = + getDescriptor().getMessageTypes().get(34); + internal_static_hbase_pb_ClearCompactionQueuesRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_hbase_pb_ClearCompactionQueuesRequest_descriptor, + new java.lang.String[] { "QueueName", }); + internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor = + getDescriptor().getMessageTypes().get(35); + internal_static_hbase_pb_ClearCompactionQueuesResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_hbase_pb_ClearCompactionQueuesResponse_descriptor, + new java.lang.String[] { }); return null; } }; diff --git a/hbase-protocol/src/main/protobuf/Admin.proto b/hbase-protocol/src/main/protobuf/Admin.proto index a1905a4..7a0c8cb 100644 --- a/hbase-protocol/src/main/protobuf/Admin.proto +++ b/hbase-protocol/src/main/protobuf/Admin.proto @@ -256,6 +256,13 @@ message UpdateConfigurationRequest { message UpdateConfigurationResponse { } +message ClearCompactionQueuesRequest { + repeated string queue_name = 1; +} + +message ClearCompactionQueuesResponse { +} + service AdminService { rpc GetRegionInfo(GetRegionInfoRequest) returns(GetRegionInfoResponse); @@ -307,4 +314,7 @@ service AdminService { rpc UpdateConfiguration(UpdateConfigurationRequest) returns(UpdateConfigurationResponse); + + rpc ClearCompactionQueues(ClearCompactionQueuesRequest) + returns(ClearCompactionQueuesResponse); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionServerObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionServerObserver.java index 8952a14..fdc7a42 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionServerObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionServerObserver.java @@ -96,4 +96,11 @@ public class BaseRegionServerObserver implements RegionServerObserver { @Override public void postReplicateLogEntries(ObserverContext ctx, List entries, CellScanner cells) throws IOException { } + @Override + public void preClearCompactionQueues(ObserverContext ctx) + throws IOException { } + + @Override + public void postClearCompactionQueues(ObserverContext ctx) + throws IOException { } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java index 69b0330..62b4e1b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java @@ -161,4 +161,20 @@ public interface RegionServerObserver extends Coprocessor { */ void postReplicateLogEntries(final ObserverContext ctx, List entries, CellScanner cells) throws IOException; + + /** + * This will be called before clearing compaction queues + * @param ctx the environment to interact with the framework and region server. + */ + void preClearCompactionQueues( + final ObserverContext ctx) + throws IOException; + + /** + * This will be called after clearing compaction queues + * @param ctx the environment to interact with the framework and region server. + */ + void postClearCompactionQueues( + final ObserverContext ctx) + throws IOException; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java index 6f95a09..67f7c56 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java @@ -727,4 +727,12 @@ public class CompactSplitThread implements CompactionRequestor, PropagatingConfi void shutdownLongCompactions(){ this.longCompactions.shutdown(); } + + public void clearLongCompactionsQueue() { + longCompactions.getQueue().clear(); + } + + public void clearShortCompactionsQueue() { + shortCompactions.getQueue().clear(); + } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 27f5420..93a2a6e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -43,6 +43,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import org.apache.commons.lang.mutable.MutableObject; @@ -103,7 +104,10 @@ import org.apache.hadoop.hbase.master.MasterRpcServices; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.RequestConverter; import org.apache.hadoop.hbase.protobuf.ResponseConverter; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionResponse; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest; @@ -265,6 +269,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, */ private final long minimumScanTimeLimitDelta; + final AtomicBoolean clearCompactionQueues = new AtomicBoolean(false); + /** * Holder class which holds the RegionScanner, nextCallSeq and RpcCallbacks together. */ @@ -3003,4 +3009,41 @@ public class RSRpcServices implements HBaseRPCErrorHandler, } return UpdateConfigurationResponse.getDefaultInstance(); } + + @Override + public ClearCompactionQueuesResponse clearCompactionQueues(RpcController controller, + ClearCompactionQueuesRequest request) throws ServiceException { + LOG.debug("Client=" + RpcServer.getRequestUserName() + "/" + RpcServer.getRemoteAddress() + + " clear compactions queue"); + ClearCompactionQueuesResponse.Builder respBuilder = ClearCompactionQueuesResponse.newBuilder(); + requestCount.increment(); + if (clearCompactionQueues.compareAndSet(false,true)) { + try { + checkOpen(); + regionServer.getRegionServerCoprocessorHost().preClearCompactionQueues(); + for (String queueName : request.getQueueNameList()) { + LOG.debug("clear " + queueName + " compaction queue"); + switch (queueName) { + case "long": + regionServer.compactSplitThread.clearLongCompactionsQueue(); + break; + case "short": + regionServer.compactSplitThread.clearShortCompactionsQueue(); + break; + default: + LOG.warn("Unknown queue name " + queueName); + throw new IOException("Unknown queue name " + queueName); + } + } + regionServer.getRegionServerCoprocessorHost().postClearCompactionQueues(); + } catch (IOException ie) { + throw new ServiceException(ie); + } finally { + clearCompactionQueues.set(false); + } + } else { + LOG.warn("Clear compactions queue is executing by other admin."); + } + return respBuilder.build(); + } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java index bb27dd2..56bc20c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java @@ -210,6 +210,26 @@ public class RegionServerCoprocessorHost extends }); } + public void preClearCompactionQueues() throws IOException { + execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() { + @Override + public void call(RegionServerObserver oserver, + ObserverContext ctx) throws IOException { + oserver.preClearCompactionQueues(ctx); + } + }); + } + + public void postClearCompactionQueues() throws IOException { + execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() { + @Override + public void call(RegionServerObserver oserver, + ObserverContext ctx) throws IOException { + oserver.postClearCompactionQueues(ctx); + } + }); + } + private T execOperationWithResult(final T defaultValue, final CoprocessOperationWithResult ctx) throws IOException { if (ctx == null) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java index dd15c3c..139a2a7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java @@ -2657,7 +2657,19 @@ public class AccessController extends BaseMasterAndRegionObserver public void postReplicateLogEntries(ObserverContext ctx, List entries, CellScanner cells) throws IOException { } - + + @Override + public void preClearCompactionQueues(ObserverContext ctx) + throws IOException { + requirePermission("preClearCompactionQueues", Permission.Action.ADMIN); + } + + @Override + public void postClearCompactionQueues(ObserverContext ctx) + throws IOException { + + } + @Override public void preSetUserQuota(final ObserverContext ctx, final String userName, final Quotas quotas) throws IOException { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java index 14bd2fd..372004f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java @@ -52,6 +52,8 @@ import org.apache.hadoop.hbase.ipc.RpcServerInterface; import org.apache.hadoop.hbase.master.TableLockManager.NullTableLockManager; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; +import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionResponse; import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest; @@ -649,6 +651,13 @@ ClientProtos.ClientService.BlockingInterface, RegionServerServices { } @Override + public ClearCompactionQueuesResponse clearCompactionQueues( + RpcController controller, ClearCompactionQueuesRequest request) + throws ServiceException { + return null; + } + + @Override public HeapMemoryManager getHeapMemoryManager() { return null; } diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb b/hbase-shell/src/main/ruby/hbase/admin.rb index 9925df3..6f18410 100644 --- a/hbase-shell/src/main/ruby/hbase/admin.rb +++ b/hbase-shell/src/main/ruby/hbase/admin.rb @@ -1154,5 +1154,31 @@ module Hbase set_user_metadata(htd, arg.delete(METADATA)) if arg[METADATA] set_descriptor_config(htd, arg.delete(CONFIGURATION)) if arg[CONFIGURATION] end + + #---------------------------------------------------------------------------------------------- + # clear compaction queues + def clear_compaction_queues(server_name, queue_name = nil) + names = ['long', 'short'] + queues = java.util.HashSet.new + if queue_name.nil? + queues.add('long') + queues.add('short') + elsif queue_name.kind_of?(String) + queues.add(queue_name) + if !(names.include?(queue_name)) + raise(ArgumentError, "Unknown queue name #{queue_name}") + end + elsif queue_name.kind_of?(Array) + queue_name.each do |s| + queues.add(s) + if !(names.include?(s)) + raise(ArgumentError, "Unknown queue name #{s}") + end + end + else + raise(ArgumentError, "Unknown queue name #{queue_name}") + end + @admin.clearCompactionQueues(ServerName.valueOf(server_name), queues) + end end end diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb index 9576cc7..e1681d8 100644 --- a/hbase-shell/src/main/ruby/shell.rb +++ b/hbase-shell/src/main/ruby/shell.rb @@ -343,6 +343,7 @@ Shell.load_command_group( trace splitormerge_switch splitormerge_enabled + clear_compaction_queues ], # TODO remove older hlog_roll command :aliases => { diff --git a/hbase-shell/src/main/ruby/shell/commands/clear_compaction_queues.rb b/hbase-shell/src/main/ruby/shell/commands/clear_compaction_queues.rb new file mode 100644 index 0000000..0f227cb --- /dev/null +++ b/hbase-shell/src/main/ruby/shell/commands/clear_compaction_queues.rb @@ -0,0 +1,41 @@ +# +# +# 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. +# + +module Shell + module Commands + class ClearCompactionQueues < Command + def help + return <<-EOF + Clear compacting queues on a regionserver. + The queue_name contains short and long. + short is shortCompactions's queue,long is longCompactions's queue. + + Examples: + hbase> clear_queues 'host187.example.com,60020' + hbase> clear_queues 'host187.example.com,60020','long' + hbase> clear_queues 'host187.example.com,60020', ['long','short'] + EOF + end + + def command(server_name, queue_name = nil) + admin.clear_compaction_queues(server_name, queue_name) + end + end + end +end \ No newline at end of file