HBASE-13571 Procedure v2 - client modify table sync

This commit is contained in:
Srikanth Srungarapu 2015-05-11 23:07:15 -07:00
parent 59a6e031fb
commit 9e131dfa8e
7 changed files with 392 additions and 255 deletions

View File

@ -859,12 +859,18 @@ public interface Admin extends Abortable, Closeable {
/** /**
* Modify an existing table, more IRB friendly version. Asynchronous operation. This means that * Modify an existing table, more IRB friendly version. Asynchronous operation. This means that
* it may be a while before your schema change is updated across all of the table. * it may be a while before your schema change is updated across all of the table.
* You can use Future.get(long, TimeUnit) to wait on the operation to complete.
* It may throw ExecutionException if there was an error while executing the operation
* or TimeoutException in case the wait timeout was not long enough to allow the
* operation to complete.
* *
* @param tableName name of table. * @param tableName name of table.
* @param htd modified description of the table * @param htd modified description of the table
* @throws IOException if a remote or network exception occurs * @throws IOException if a remote or network exception occurs
* @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the
* operation to complete
*/ */
void modifyTable(final TableName tableName, final HTableDescriptor htd) Future<Void> modifyTable(final TableName tableName, final HTableDescriptor htd)
throws IOException; throws IOException;
/** /**

View File

@ -128,6 +128,7 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MajorCompactionTi
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyColumnRequest; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyColumnRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyNamespaceRequest; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyNamespaceRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableRequest; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MoveRegionRequest; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MoveRegionRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RestoreSnapshotRequest; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RestoreSnapshotRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RestoreSnapshotResponse; import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RestoreSnapshotResponse;
@ -641,8 +642,8 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
protected String getDescription() { public String getOperationType() {
return "Creating " + desc.getNameAsString(); return "CREATE";
} }
@Override @Override
@ -719,8 +720,8 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
protected String getDescription() { public String getOperationType() {
return "Deleting " + getTableName(); return "DELETE";
} }
@Override @Override
@ -847,8 +848,8 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
public String getDescription() { public String getOperationType() {
return "Truncating " + getTableName(); return "TRUNCATE";
} }
@Override @Override
@ -1005,8 +1006,8 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
protected String getDescription() { public String getOperationType() {
return "Enabling " + getTableName(); return "ENABLE";
} }
@Override @Override
@ -1142,8 +1143,8 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
protected String getDescription() { public String getOperationType() {
return "Disabling " + getTableName(); return "DISABLE";
} }
@Override @Override
@ -2371,30 +2372,60 @@ public class HBaseAdmin implements Admin {
} }
/** /**
* Modify an existing table, more IRB friendly version. * Modify an existing table, more IRB friendly version. Asynchronous operation.
* Asynchronous operation. This means that it may be a while before your * This means that it may be a while before your schema change is updated across all of the
* schema change is updated across all of the table. * table. You can use Future.get(long, TimeUnit) to wait on the operation to complete.
* It may throw ExecutionException if there was an error while executing the operation
* or TimeoutException in case the wait timeout was not long enough to allow the
* operation to complete.
* *
* @param tableName name of table. * @param tableName name of table.
* @param htd modified description of the table * @param htd modified description of the table
* @throws IOException if a remote or network exception occurs * @throws IOException if a remote or network exception occurs
* @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the
* operation to complete.
*/ */
@Override @Override
public void modifyTable(final TableName tableName, final HTableDescriptor htd) public Future<Void> modifyTable(final TableName tableName, final HTableDescriptor htd)
throws IOException { throws IOException {
if (!tableName.equals(htd.getTableName())) { if (!tableName.equals(htd.getTableName())) {
throw new IllegalArgumentException("the specified table name '" + tableName + throw new IllegalArgumentException("the specified table name '" + tableName +
"' doesn't match with the HTD one: " + htd.getTableName()); "' doesn't match with the HTD one: " + htd.getTableName());
} }
executeCallable(new MasterCallable<Void>(getConnection()) { ModifyTableResponse response = executeCallable(
new MasterCallable<ModifyTableResponse>(getConnection()) {
@Override @Override
public Void call(int callTimeout) throws ServiceException { public ModifyTableResponse call(int callTimeout) throws ServiceException {
ModifyTableRequest request = RequestConverter.buildModifyTableRequest(tableName, htd); ModifyTableRequest request = RequestConverter.buildModifyTableRequest(tableName, htd);
master.modifyTable(null, request); return master.modifyTable(null, request);
return null;
} }
}); });
return new ModifyTableFuture(this, tableName, response);
}
private static class ModifyTableFuture extends TableFuture<Void> {
public ModifyTableFuture(final HBaseAdmin admin, final TableName tableName,
final ModifyTableResponse response) {
super(admin, tableName,
(response != null && response.hasProcId()) ? response.getProcId() : null);
}
@Override
public String getOperationType() {
return "MODIFY";
}
@Override
protected Void postOperationResult(final Void result, final long deadlineTs)
throws IOException, TimeoutException {
// The modify operation on the table is asynchronous on the server side irrespective
// of whether Procedure V2 is supported or not. So, we wait in the client till
// all regions get updated.
waitForSchemaUpdate(deadlineTs);
return result;
}
} }
public void modifyTable(final byte[] tableName, final HTableDescriptor htd) public void modifyTable(final byte[] tableName, final HTableDescriptor htd)
@ -4261,10 +4292,33 @@ public class HBaseAdmin implements Admin {
return getAdmin().getTableDescriptorByTableName(getTableName()); return getAdmin().getTableDescriptorByTableName(getTableName());
} }
/**
* @return the operation type like CREATE, DELETE, DISABLE etc.
*/
public abstract String getOperationType();
/** /**
* @return a description of the operation * @return a description of the operation
*/ */
protected abstract String getDescription(); protected String getDescription() {
return "Operation: " + getOperationType() + ", "
+ "Table Name: " + tableName.getNameWithNamespaceInclAsString();
};
protected abstract class TableWaitForStateCallable implements WaitForStateCallable {
@Override
public void throwInterruptedException() throws InterruptedIOException {
throw new InterruptedIOException("Interrupted while waiting for operation: "
+ getOperationType() + " on table: " + tableName.getNameWithNamespaceInclAsString());
}
@Override
public void throwTimeoutException(long elapsedTime) throws TimeoutException {
throw new TimeoutException("The operation: " + getOperationType() + " on table: " +
tableName.getNameAsString() + " not completed after " + elapsedTime + "msec");
}
}
@Override @Override
protected V postOperationResult(final V result, final long deadlineTs) protected V postOperationResult(final V result, final long deadlineTs)
@ -4282,7 +4336,7 @@ public class HBaseAdmin implements Admin {
protected void waitForTableEnabled(final long deadlineTs) protected void waitForTableEnabled(final long deadlineTs)
throws IOException, TimeoutException { throws IOException, TimeoutException {
waitForState(deadlineTs, new WaitForStateCallable() { waitForState(deadlineTs, new TableWaitForStateCallable() {
@Override @Override
public boolean checkState(int tries) throws IOException { public boolean checkState(int tries) throws IOException {
try { try {
@ -4290,43 +4344,40 @@ public class HBaseAdmin implements Admin {
return true; return true;
} }
} catch (TableNotFoundException tnfe) { } catch (TableNotFoundException tnfe) {
LOG.debug("Table " + tableName.getNameAsString() LOG.debug("Table " + tableName.getNameWithNamespaceInclAsString()
+ " was not enabled, sleeping. tries=" + tries); + " was not enabled, sleeping. tries=" + tries);
} }
return false; return false;
} }
@Override
public void throwInterruptedException() throws InterruptedIOException {
throw new InterruptedIOException("Interrupted when waiting for table "
+ tableName.getNameAsString() + " to be enabled");
}
@Override
public void throwTimeoutException(long elapsedTime) throws TimeoutException {
throw new TimeoutException("Table " + tableName.getNameAsString()
+ " not enabled after " + elapsedTime + "msec");
}
}); });
} }
protected void waitForTableDisabled(final long deadlineTs) protected void waitForTableDisabled(final long deadlineTs)
throws IOException, TimeoutException { throws IOException, TimeoutException {
waitForState(deadlineTs, new WaitForStateCallable() { waitForState(deadlineTs, new TableWaitForStateCallable() {
@Override @Override
public boolean checkState(int tries) throws IOException { public boolean checkState(int tries) throws IOException {
return getAdmin().isTableDisabled(tableName); return getAdmin().isTableDisabled(tableName);
} }
});
}
protected void waitTableNotFound(final long deadlineTs)
throws IOException, TimeoutException {
waitForState(deadlineTs, new TableWaitForStateCallable() {
@Override @Override
public void throwInterruptedException() throws InterruptedIOException { public boolean checkState(int tries) throws IOException {
throw new InterruptedIOException("Interrupted when waiting for table to be disabled"); return !getAdmin().tableExists(tableName);
} }
});
}
protected void waitForSchemaUpdate(final long deadlineTs)
throws IOException, TimeoutException {
waitForState(deadlineTs, new TableWaitForStateCallable() {
@Override @Override
public void throwTimeoutException(long elapsedTime) throws TimeoutException { public boolean checkState(int tries) throws IOException {
throw new TimeoutException("Table " + tableName + " not yet disabled after " return getAdmin().getAlterStatus(tableName).getFirst() == 0;
+ elapsedTime + "msec");
} }
}); });
} }
@ -4385,26 +4436,5 @@ public class HBaseAdmin implements Admin {
throw new TimeoutException("Only " + actualRegCount.get() + " of " + numRegs throw new TimeoutException("Only " + actualRegCount.get() + " of " + numRegs
+ " regions are online; retries exhausted."); + " regions are online; retries exhausted.");
} }
protected void waitTableNotFound(final long deadlineTs)
throws IOException, TimeoutException {
waitForState(deadlineTs, new WaitForStateCallable() {
@Override
public boolean checkState(int tries) throws IOException {
return !getAdmin().tableExists(tableName);
}
@Override
public void throwInterruptedException() throws InterruptedIOException {
throw new InterruptedIOException("Interrupted when waiting for table to be deleted");
}
@Override
public void throwTimeoutException(long elapsedTime) throws TimeoutException {
throw new TimeoutException("Table " + tableName + " not yet deleted after "
+ elapsedTime + "msec");
}
});
}
} }
} }

View File

@ -14356,6 +14356,16 @@ public final class MasterProtos {
public interface ModifyTableResponseOrBuilder public interface ModifyTableResponseOrBuilder
extends com.google.protobuf.MessageOrBuilder { extends com.google.protobuf.MessageOrBuilder {
// optional uint64 proc_id = 1;
/**
* <code>optional uint64 proc_id = 1;</code>
*/
boolean hasProcId();
/**
* <code>optional uint64 proc_id = 1;</code>
*/
long getProcId();
} }
/** /**
* Protobuf type {@code ModifyTableResponse} * Protobuf type {@code ModifyTableResponse}
@ -14390,6 +14400,7 @@ public final class MasterProtos {
com.google.protobuf.ExtensionRegistryLite extensionRegistry) com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException { throws com.google.protobuf.InvalidProtocolBufferException {
initFields(); initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder(); com.google.protobuf.UnknownFieldSet.newBuilder();
try { try {
@ -14407,6 +14418,11 @@ public final class MasterProtos {
} }
break; break;
} }
case 8: {
bitField0_ |= 0x00000001;
procId_ = input.readUInt64();
break;
}
} }
} }
} catch (com.google.protobuf.InvalidProtocolBufferException e) { } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@ -14446,7 +14462,25 @@ public final class MasterProtos {
return PARSER; return PARSER;
} }
private int bitField0_;
// optional uint64 proc_id = 1;
public static final int PROC_ID_FIELD_NUMBER = 1;
private long procId_;
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public boolean hasProcId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public long getProcId() {
return procId_;
}
private void initFields() { private void initFields() {
procId_ = 0L;
} }
private byte memoizedIsInitialized = -1; private byte memoizedIsInitialized = -1;
public final boolean isInitialized() { public final boolean isInitialized() {
@ -14460,6 +14494,9 @@ public final class MasterProtos {
public void writeTo(com.google.protobuf.CodedOutputStream output) public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException { throws java.io.IOException {
getSerializedSize(); getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeUInt64(1, procId_);
}
getUnknownFields().writeTo(output); getUnknownFields().writeTo(output);
} }
@ -14469,6 +14506,10 @@ public final class MasterProtos {
if (size != -1) return size; if (size != -1) return size;
size = 0; size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeUInt64Size(1, procId_);
}
size += getUnknownFields().getSerializedSize(); size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size; memoizedSerializedSize = size;
return size; return size;
@ -14492,6 +14533,11 @@ public final class MasterProtos {
org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse other = (org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse) obj; org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse other = (org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse) obj;
boolean result = true; boolean result = true;
result = result && (hasProcId() == other.hasProcId());
if (hasProcId()) {
result = result && (getProcId()
== other.getProcId());
}
result = result && result = result &&
getUnknownFields().equals(other.getUnknownFields()); getUnknownFields().equals(other.getUnknownFields());
return result; return result;
@ -14505,6 +14551,10 @@ public final class MasterProtos {
} }
int hash = 41; int hash = 41;
hash = (19 * hash) + getDescriptorForType().hashCode(); hash = (19 * hash) + getDescriptorForType().hashCode();
if (hasProcId()) {
hash = (37 * hash) + PROC_ID_FIELD_NUMBER;
hash = (53 * hash) + hashLong(getProcId());
}
hash = (29 * hash) + getUnknownFields().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash; memoizedHashCode = hash;
return hash; return hash;
@ -14614,6 +14664,8 @@ public final class MasterProtos {
public Builder clear() { public Builder clear() {
super.clear(); super.clear();
procId_ = 0L;
bitField0_ = (bitField0_ & ~0x00000001);
return this; return this;
} }
@ -14640,6 +14692,13 @@ public final class MasterProtos {
public org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse buildPartial() { public org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse buildPartial() {
org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse result = new org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse(this); org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse result = new org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.procId_ = procId_;
result.bitField0_ = to_bitField0_;
onBuilt(); onBuilt();
return result; return result;
} }
@ -14655,6 +14714,9 @@ public final class MasterProtos {
public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse other) { public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse other) {
if (other == org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse.getDefaultInstance()) return this; if (other == org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableResponse.getDefaultInstance()) return this;
if (other.hasProcId()) {
setProcId(other.getProcId());
}
this.mergeUnknownFields(other.getUnknownFields()); this.mergeUnknownFields(other.getUnknownFields());
return this; return this;
} }
@ -14680,6 +14742,40 @@ public final class MasterProtos {
} }
return this; return this;
} }
private int bitField0_;
// optional uint64 proc_id = 1;
private long procId_ ;
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public boolean hasProcId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public long getProcId() {
return procId_;
}
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public Builder setProcId(long value) {
bitField0_ |= 0x00000001;
procId_ = value;
onChanged();
return this;
}
/**
* <code>optional uint64 proc_id = 1;</code>
*/
public Builder clearProcId() {
bitField0_ = (bitField0_ & ~0x00000001);
procId_ = 0L;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:ModifyTableResponse) // @@protoc_insertion_point(builder_scope:ModifyTableResponse)
} }
@ -53254,195 +53350,195 @@ public final class MasterProtos {
"e\"\'\n\024DisableTableResponse\022\017\n\007proc_id\030\001 \001" + "e\"\'\n\024DisableTableResponse\022\017\n\007proc_id\030\001 \001" +
"(\004\"X\n\022ModifyTableRequest\022\036\n\ntable_name\030\001" + "(\004\"X\n\022ModifyTableRequest\022\036\n\ntable_name\030\001" +
" \002(\0132\n.TableName\022\"\n\014table_schema\030\002 \002(\0132\014", " \002(\0132\n.TableName\022\"\n\014table_schema\030\002 \002(\0132\014",
".TableSchema\"\025\n\023ModifyTableResponse\"K\n\026C" + ".TableSchema\"&\n\023ModifyTableResponse\022\017\n\007p" +
"reateNamespaceRequest\0221\n\023namespaceDescri" + "roc_id\030\001 \001(\004\"K\n\026CreateNamespaceRequest\0221" +
"ptor\030\001 \002(\0132\024.NamespaceDescriptor\"\031\n\027Crea" + "\n\023namespaceDescriptor\030\001 \002(\0132\024.NamespaceD" +
"teNamespaceResponse\"/\n\026DeleteNamespaceRe" + "escriptor\"\031\n\027CreateNamespaceResponse\"/\n\026" +
"quest\022\025\n\rnamespaceName\030\001 \002(\t\"\031\n\027DeleteNa" + "DeleteNamespaceRequest\022\025\n\rnamespaceName\030" +
"mespaceResponse\"K\n\026ModifyNamespaceReques" + "\001 \002(\t\"\031\n\027DeleteNamespaceResponse\"K\n\026Modi" +
"t\0221\n\023namespaceDescriptor\030\001 \002(\0132\024.Namespa" + "fyNamespaceRequest\0221\n\023namespaceDescripto" +
"ceDescriptor\"\031\n\027ModifyNamespaceResponse\"" + "r\030\001 \002(\0132\024.NamespaceDescriptor\"\031\n\027ModifyN" +
"6\n\035GetNamespaceDescriptorRequest\022\025\n\rname" + "amespaceResponse\"6\n\035GetNamespaceDescript" +
"spaceName\030\001 \002(\t\"S\n\036GetNamespaceDescripto", "orRequest\022\025\n\rnamespaceName\030\001 \002(\t\"S\n\036GetN",
"rResponse\0221\n\023namespaceDescriptor\030\001 \002(\0132\024" + "amespaceDescriptorResponse\0221\n\023namespaceD" +
".NamespaceDescriptor\"!\n\037ListNamespaceDes" + "escriptor\030\001 \002(\0132\024.NamespaceDescriptor\"!\n" +
"criptorsRequest\"U\n ListNamespaceDescript" + "\037ListNamespaceDescriptorsRequest\"U\n List" +
"orsResponse\0221\n\023namespaceDescriptor\030\001 \003(\013" + "NamespaceDescriptorsResponse\0221\n\023namespac" +
"2\024.NamespaceDescriptor\"?\n&ListTableDescr" + "eDescriptor\030\001 \003(\0132\024.NamespaceDescriptor\"" +
"iptorsByNamespaceRequest\022\025\n\rnamespaceNam" + "?\n&ListTableDescriptorsByNamespaceReques" +
"e\030\001 \002(\t\"L\n\'ListTableDescriptorsByNamespa" + "t\022\025\n\rnamespaceName\030\001 \002(\t\"L\n\'ListTableDes" +
"ceResponse\022!\n\013tableSchema\030\001 \003(\0132\014.TableS" + "criptorsByNamespaceResponse\022!\n\013tableSche" +
"chema\"9\n ListTableNamesByNamespaceReques" + "ma\030\001 \003(\0132\014.TableSchema\"9\n ListTableNames" +
"t\022\025\n\rnamespaceName\030\001 \002(\t\"B\n!ListTableNam", "ByNamespaceRequest\022\025\n\rnamespaceName\030\001 \002(",
"esByNamespaceResponse\022\035\n\ttableName\030\001 \003(\013" + "\t\"B\n!ListTableNamesByNamespaceResponse\022\035" +
"2\n.TableName\"\021\n\017ShutdownRequest\"\022\n\020Shutd" + "\n\ttableName\030\001 \003(\0132\n.TableName\"\021\n\017Shutdow" +
"ownResponse\"\023\n\021StopMasterRequest\"\024\n\022Stop" + "nRequest\"\022\n\020ShutdownResponse\"\023\n\021StopMast" +
"MasterResponse\"\020\n\016BalanceRequest\"\'\n\017Bala" + "erRequest\"\024\n\022StopMasterResponse\"\020\n\016Balan" +
"nceResponse\022\024\n\014balancer_ran\030\001 \002(\010\"<\n\031Set" + "ceRequest\"\'\n\017BalanceResponse\022\024\n\014balancer" +
"BalancerRunningRequest\022\n\n\002on\030\001 \002(\010\022\023\n\013sy" + "_ran\030\001 \002(\010\"<\n\031SetBalancerRunningRequest\022" +
"nchronous\030\002 \001(\010\"8\n\032SetBalancerRunningRes" + "\n\n\002on\030\001 \002(\010\022\023\n\013synchronous\030\002 \001(\010\"8\n\032SetB" +
"ponse\022\032\n\022prev_balance_value\030\001 \001(\010\"\032\n\030IsB" + "alancerRunningResponse\022\032\n\022prev_balance_v" +
"alancerEnabledRequest\",\n\031IsBalancerEnabl" + "alue\030\001 \001(\010\"\032\n\030IsBalancerEnabledRequest\"," +
"edResponse\022\017\n\007enabled\030\001 \002(\010\"\027\n\025RunCatalo", "\n\031IsBalancerEnabledResponse\022\017\n\007enabled\030\001",
"gScanRequest\"-\n\026RunCatalogScanResponse\022\023" + " \002(\010\"\027\n\025RunCatalogScanRequest\"-\n\026RunCata" +
"\n\013scan_result\030\001 \001(\005\"-\n\033EnableCatalogJani" + "logScanResponse\022\023\n\013scan_result\030\001 \001(\005\"-\n\033" +
"torRequest\022\016\n\006enable\030\001 \002(\010\"2\n\034EnableCata" + "EnableCatalogJanitorRequest\022\016\n\006enable\030\001 " +
"logJanitorResponse\022\022\n\nprev_value\030\001 \001(\010\" " + "\002(\010\"2\n\034EnableCatalogJanitorResponse\022\022\n\np" +
"\n\036IsCatalogJanitorEnabledRequest\"0\n\037IsCa" + "rev_value\030\001 \001(\010\" \n\036IsCatalogJanitorEnabl" +
"talogJanitorEnabledResponse\022\r\n\005value\030\001 \002" + "edRequest\"0\n\037IsCatalogJanitorEnabledResp" +
"(\010\"9\n\017SnapshotRequest\022&\n\010snapshot\030\001 \002(\0132" + "onse\022\r\n\005value\030\001 \002(\010\"9\n\017SnapshotRequest\022&" +
"\024.SnapshotDescription\",\n\020SnapshotRespons" + "\n\010snapshot\030\001 \002(\0132\024.SnapshotDescription\"," +
"e\022\030\n\020expected_timeout\030\001 \002(\003\"\036\n\034GetComple" + "\n\020SnapshotResponse\022\030\n\020expected_timeout\030\001" +
"tedSnapshotsRequest\"H\n\035GetCompletedSnaps", " \002(\003\"\036\n\034GetCompletedSnapshotsRequest\"H\n\035",
"hotsResponse\022\'\n\tsnapshots\030\001 \003(\0132\024.Snapsh" + "GetCompletedSnapshotsResponse\022\'\n\tsnapsho" +
"otDescription\"?\n\025DeleteSnapshotRequest\022&" + "ts\030\001 \003(\0132\024.SnapshotDescription\"?\n\025Delete" +
"\n\010snapshot\030\001 \002(\0132\024.SnapshotDescription\"\030" + "SnapshotRequest\022&\n\010snapshot\030\001 \002(\0132\024.Snap" +
"\n\026DeleteSnapshotResponse\"@\n\026RestoreSnaps" + "shotDescription\"\030\n\026DeleteSnapshotRespons" +
"hotRequest\022&\n\010snapshot\030\001 \002(\0132\024.SnapshotD" + "e\"@\n\026RestoreSnapshotRequest\022&\n\010snapshot\030" +
"escription\"\031\n\027RestoreSnapshotResponse\"?\n" + "\001 \002(\0132\024.SnapshotDescription\"\031\n\027RestoreSn" +
"\025IsSnapshotDoneRequest\022&\n\010snapshot\030\001 \001(\013" + "apshotResponse\"?\n\025IsSnapshotDoneRequest\022" +
"2\024.SnapshotDescription\"U\n\026IsSnapshotDone" + "&\n\010snapshot\030\001 \001(\0132\024.SnapshotDescription\"" +
"Response\022\023\n\004done\030\001 \001(\010:\005false\022&\n\010snapsho" + "U\n\026IsSnapshotDoneResponse\022\023\n\004done\030\001 \001(\010:" +
"t\030\002 \001(\0132\024.SnapshotDescription\"F\n\034IsResto", "\005false\022&\n\010snapshot\030\002 \001(\0132\024.SnapshotDescr",
"reSnapshotDoneRequest\022&\n\010snapshot\030\001 \001(\0132" + "iption\"F\n\034IsRestoreSnapshotDoneRequest\022&" +
"\024.SnapshotDescription\"4\n\035IsRestoreSnapsh" + "\n\010snapshot\030\001 \001(\0132\024.SnapshotDescription\"4" +
"otDoneResponse\022\023\n\004done\030\001 \001(\010:\005false\"=\n\033G" + "\n\035IsRestoreSnapshotDoneResponse\022\023\n\004done\030" +
"etSchemaAlterStatusRequest\022\036\n\ntable_name" + "\001 \001(\010:\005false\"=\n\033GetSchemaAlterStatusRequ" +
"\030\001 \002(\0132\n.TableName\"T\n\034GetSchemaAlterStat" + "est\022\036\n\ntable_name\030\001 \002(\0132\n.TableName\"T\n\034G" +
"usResponse\022\035\n\025yet_to_update_regions\030\001 \001(" + "etSchemaAlterStatusResponse\022\035\n\025yet_to_up" +
"\r\022\025\n\rtotal_regions\030\002 \001(\r\"\202\001\n\032GetTableDes" + "date_regions\030\001 \001(\r\022\025\n\rtotal_regions\030\002 \001(" +
"criptorsRequest\022\037\n\013table_names\030\001 \003(\0132\n.T" + "\r\"\202\001\n\032GetTableDescriptorsRequest\022\037\n\013tabl" +
"ableName\022\r\n\005regex\030\002 \001(\t\022!\n\022include_sys_t" + "e_names\030\001 \003(\0132\n.TableName\022\r\n\005regex\030\002 \001(\t" +
"ables\030\003 \001(\010:\005false\022\021\n\tnamespace\030\004 \001(\t\"A\n", "\022!\n\022include_sys_tables\030\003 \001(\010:\005false\022\021\n\tn",
"\033GetTableDescriptorsResponse\022\"\n\014table_sc" + "amespace\030\004 \001(\t\"A\n\033GetTableDescriptorsRes" +
"hema\030\001 \003(\0132\014.TableSchema\"[\n\024GetTableName" + "ponse\022\"\n\014table_schema\030\001 \003(\0132\014.TableSchem" +
"sRequest\022\r\n\005regex\030\001 \001(\t\022!\n\022include_sys_t" + "a\"[\n\024GetTableNamesRequest\022\r\n\005regex\030\001 \001(\t" +
"ables\030\002 \001(\010:\005false\022\021\n\tnamespace\030\003 \001(\t\"8\n" + "\022!\n\022include_sys_tables\030\002 \001(\010:\005false\022\021\n\tn" +
"\025GetTableNamesResponse\022\037\n\013table_names\030\001 " + "amespace\030\003 \001(\t\"8\n\025GetTableNamesResponse\022" +
"\003(\0132\n.TableName\"6\n\024GetTableStateRequest\022" + "\037\n\013table_names\030\001 \003(\0132\n.TableName\"6\n\024GetT" +
"\036\n\ntable_name\030\001 \002(\0132\n.TableName\"9\n\025GetTa" + "ableStateRequest\022\036\n\ntable_name\030\001 \002(\0132\n.T" +
"bleStateResponse\022 \n\013table_state\030\001 \002(\0132\013." + "ableName\"9\n\025GetTableStateResponse\022 \n\013tab" +
"TableState\"\031\n\027GetClusterStatusRequest\"B\n" + "le_state\030\001 \002(\0132\013.TableState\"\031\n\027GetCluste" +
"\030GetClusterStatusResponse\022&\n\016cluster_sta", "rStatusRequest\"B\n\030GetClusterStatusRespon",
"tus\030\001 \002(\0132\016.ClusterStatus\"\030\n\026IsMasterRun" + "se\022&\n\016cluster_status\030\001 \002(\0132\016.ClusterStat" +
"ningRequest\"4\n\027IsMasterRunningResponse\022\031" + "us\"\030\n\026IsMasterRunningRequest\"4\n\027IsMaster" +
"\n\021is_master_running\030\001 \002(\010\"@\n\024ExecProcedu" + "RunningResponse\022\031\n\021is_master_running\030\001 \002" +
"reRequest\022(\n\tprocedure\030\001 \002(\0132\025.Procedure" + "(\010\"@\n\024ExecProcedureRequest\022(\n\tprocedure\030" +
"Description\"F\n\025ExecProcedureResponse\022\030\n\020" + "\001 \002(\0132\025.ProcedureDescription\"F\n\025ExecProc" +
"expected_timeout\030\001 \001(\003\022\023\n\013return_data\030\002 " + "edureResponse\022\030\n\020expected_timeout\030\001 \001(\003\022" +
"\001(\014\"B\n\026IsProcedureDoneRequest\022(\n\tprocedu" + "\023\n\013return_data\030\002 \001(\014\"B\n\026IsProcedureDoneR" +
"re\030\001 \001(\0132\025.ProcedureDescription\"W\n\027IsPro" + "equest\022(\n\tprocedure\030\001 \001(\0132\025.ProcedureDes" +
"cedureDoneResponse\022\023\n\004done\030\001 \001(\010:\005false\022" + "cription\"W\n\027IsProcedureDoneResponse\022\023\n\004d" +
"\'\n\010snapshot\030\002 \001(\0132\025.ProcedureDescription", "one\030\001 \001(\010:\005false\022\'\n\010snapshot\030\002 \001(\0132\025.Pro",
"\",\n\031GetProcedureResultRequest\022\017\n\007proc_id" + "cedureDescription\",\n\031GetProcedureResultR" +
"\030\001 \002(\004\"\347\001\n\032GetProcedureResultResponse\0220\n" + "equest\022\017\n\007proc_id\030\001 \002(\004\"\347\001\n\032GetProcedure" +
"\005state\030\001 \002(\0162!.GetProcedureResultRespons" + "ResultResponse\0220\n\005state\030\001 \002(\0162!.GetProce" +
"e.State\022\022\n\nstart_time\030\002 \001(\004\022\023\n\013last_upda" + "dureResultResponse.State\022\022\n\nstart_time\030\002" +
"te\030\003 \001(\004\022\016\n\006result\030\004 \001(\014\022+\n\texception\030\005 " + " \001(\004\022\023\n\013last_update\030\003 \001(\004\022\016\n\006result\030\004 \001(" +
"\001(\0132\030.ForeignExceptionMessage\"1\n\005State\022\r" + "\014\022+\n\texception\030\005 \001(\0132\030.ForeignExceptionM" +
"\n\tNOT_FOUND\020\000\022\013\n\007RUNNING\020\001\022\014\n\010FINISHED\020\002" + "essage\"1\n\005State\022\r\n\tNOT_FOUND\020\000\022\013\n\007RUNNIN" +
"\"\273\001\n\017SetQuotaRequest\022\021\n\tuser_name\030\001 \001(\t\022" + "G\020\001\022\014\n\010FINISHED\020\002\"\273\001\n\017SetQuotaRequest\022\021\n" +
"\022\n\nuser_group\030\002 \001(\t\022\021\n\tnamespace\030\003 \001(\t\022\036" + "\tuser_name\030\001 \001(\t\022\022\n\nuser_group\030\002 \001(\t\022\021\n\t" +
"\n\ntable_name\030\004 \001(\0132\n.TableName\022\022\n\nremove", "namespace\030\003 \001(\t\022\036\n\ntable_name\030\004 \001(\0132\n.Ta",
"_all\030\005 \001(\010\022\026\n\016bypass_globals\030\006 \001(\010\022\"\n\010th" + "bleName\022\022\n\nremove_all\030\005 \001(\010\022\026\n\016bypass_gl" +
"rottle\030\007 \001(\0132\020.ThrottleRequest\"\022\n\020SetQuo" + "obals\030\006 \001(\010\022\"\n\010throttle\030\007 \001(\0132\020.Throttle" +
"taResponse\"A\n\037MajorCompactionTimestampRe" + "Request\"\022\n\020SetQuotaResponse\"A\n\037MajorComp" +
"quest\022\036\n\ntable_name\030\001 \002(\0132\n.TableName\"L\n" + "actionTimestampRequest\022\036\n\ntable_name\030\001 \002" +
"(MajorCompactionTimestampForRegionReques" + "(\0132\n.TableName\"L\n(MajorCompactionTimesta" +
"t\022 \n\006region\030\001 \002(\0132\020.RegionSpecifier\"@\n M" + "mpForRegionRequest\022 \n\006region\030\001 \002(\0132\020.Reg" +
"ajorCompactionTimestampResponse\022\034\n\024compa" + "ionSpecifier\"@\n MajorCompactionTimestamp" +
"ction_timestamp\030\001 \002(\0032\343\033\n\rMasterService\022" + "Response\022\034\n\024compaction_timestamp\030\001 \002(\0032\343" +
"S\n\024GetSchemaAlterStatus\022\034.GetSchemaAlter" + "\033\n\rMasterService\022S\n\024GetSchemaAlterStatus" +
"StatusRequest\032\035.GetSchemaAlterStatusResp", "\022\034.GetSchemaAlterStatusRequest\032\035.GetSche",
"onse\022P\n\023GetTableDescriptors\022\033.GetTableDe" + "maAlterStatusResponse\022P\n\023GetTableDescrip" +
"scriptorsRequest\032\034.GetTableDescriptorsRe" + "tors\022\033.GetTableDescriptorsRequest\032\034.GetT" +
"sponse\022>\n\rGetTableNames\022\025.GetTableNamesR" + "ableDescriptorsResponse\022>\n\rGetTableNames" +
"equest\032\026.GetTableNamesResponse\022G\n\020GetClu" + "\022\025.GetTableNamesRequest\032\026.GetTableNamesR" +
"sterStatus\022\030.GetClusterStatusRequest\032\031.G" + "esponse\022G\n\020GetClusterStatus\022\030.GetCluster" +
"etClusterStatusResponse\022D\n\017IsMasterRunni" + "StatusRequest\032\031.GetClusterStatusResponse" +
"ng\022\027.IsMasterRunningRequest\032\030.IsMasterRu" + "\022D\n\017IsMasterRunning\022\027.IsMasterRunningReq" +
"nningResponse\0222\n\tAddColumn\022\021.AddColumnRe" + "uest\032\030.IsMasterRunningResponse\0222\n\tAddCol" +
"quest\032\022.AddColumnResponse\022;\n\014DeleteColum" + "umn\022\021.AddColumnRequest\032\022.AddColumnRespon" +
"n\022\024.DeleteColumnRequest\032\025.DeleteColumnRe", "se\022;\n\014DeleteColumn\022\024.DeleteColumnRequest",
"sponse\022;\n\014ModifyColumn\022\024.ModifyColumnReq" + "\032\025.DeleteColumnResponse\022;\n\014ModifyColumn\022" +
"uest\032\025.ModifyColumnResponse\0225\n\nMoveRegio" + "\024.ModifyColumnRequest\032\025.ModifyColumnResp" +
"n\022\022.MoveRegionRequest\032\023.MoveRegionRespon" + "onse\0225\n\nMoveRegion\022\022.MoveRegionRequest\032\023" +
"se\022Y\n\026DispatchMergingRegions\022\036.DispatchM" + ".MoveRegionResponse\022Y\n\026DispatchMergingRe" +
"ergingRegionsRequest\032\037.DispatchMergingRe" + "gions\022\036.DispatchMergingRegionsRequest\032\037." +
"gionsResponse\022;\n\014AssignRegion\022\024.AssignRe" + "DispatchMergingRegionsResponse\022;\n\014Assign" +
"gionRequest\032\025.AssignRegionResponse\022A\n\016Un" + "Region\022\024.AssignRegionRequest\032\025.AssignReg" +
"assignRegion\022\026.UnassignRegionRequest\032\027.U" + "ionResponse\022A\n\016UnassignRegion\022\026.Unassign" +
"nassignRegionResponse\022>\n\rOfflineRegion\022\025" + "RegionRequest\032\027.UnassignRegionResponse\022>" +
".OfflineRegionRequest\032\026.OfflineRegionRes", "\n\rOfflineRegion\022\025.OfflineRegionRequest\032\026",
"ponse\0228\n\013DeleteTable\022\023.DeleteTableReques" + ".OfflineRegionResponse\0228\n\013DeleteTable\022\023." +
"t\032\024.DeleteTableResponse\022>\n\rtruncateTable" + "DeleteTableRequest\032\024.DeleteTableResponse" +
"\022\025.TruncateTableRequest\032\026.TruncateTableR" + "\022>\n\rtruncateTable\022\025.TruncateTableRequest" +
"esponse\0228\n\013EnableTable\022\023.EnableTableRequ" + "\032\026.TruncateTableResponse\0228\n\013EnableTable\022" +
"est\032\024.EnableTableResponse\022;\n\014DisableTabl" + "\023.EnableTableRequest\032\024.EnableTableRespon" +
"e\022\024.DisableTableRequest\032\025.DisableTableRe" + "se\022;\n\014DisableTable\022\024.DisableTableRequest" +
"sponse\0228\n\013ModifyTable\022\023.ModifyTableReque" + "\032\025.DisableTableResponse\0228\n\013ModifyTable\022\023" +
"st\032\024.ModifyTableResponse\0228\n\013CreateTable\022" + ".ModifyTableRequest\032\024.ModifyTableRespons" +
"\023.CreateTableRequest\032\024.CreateTableRespon" + "e\0228\n\013CreateTable\022\023.CreateTableRequest\032\024." +
"se\022/\n\010Shutdown\022\020.ShutdownRequest\032\021.Shutd", "CreateTableResponse\022/\n\010Shutdown\022\020.Shutdo",
"ownResponse\0225\n\nStopMaster\022\022.StopMasterRe" + "wnRequest\032\021.ShutdownResponse\0225\n\nStopMast" +
"quest\032\023.StopMasterResponse\022,\n\007Balance\022\017." + "er\022\022.StopMasterRequest\032\023.StopMasterRespo" +
"BalanceRequest\032\020.BalanceResponse\022M\n\022SetB" + "nse\022,\n\007Balance\022\017.BalanceRequest\032\020.Balanc" +
"alancerRunning\022\032.SetBalancerRunningReque" + "eResponse\022M\n\022SetBalancerRunning\022\032.SetBal" +
"st\032\033.SetBalancerRunningResponse\022J\n\021IsBal" + "ancerRunningRequest\032\033.SetBalancerRunning" +
"ancerEnabled\022\031.IsBalancerEnabledRequest\032" + "Response\022J\n\021IsBalancerEnabled\022\031.IsBalanc" +
"\032.IsBalancerEnabledResponse\022A\n\016RunCatalo" + "erEnabledRequest\032\032.IsBalancerEnabledResp" +
"gScan\022\026.RunCatalogScanRequest\032\027.RunCatal" + "onse\022A\n\016RunCatalogScan\022\026.RunCatalogScanR" +
"ogScanResponse\022S\n\024EnableCatalogJanitor\022\034" + "equest\032\027.RunCatalogScanResponse\022S\n\024Enabl" +
".EnableCatalogJanitorRequest\032\035.EnableCat", "eCatalogJanitor\022\034.EnableCatalogJanitorRe",
"alogJanitorResponse\022\\\n\027IsCatalogJanitorE" + "quest\032\035.EnableCatalogJanitorResponse\022\\\n\027" +
"nabled\022\037.IsCatalogJanitorEnabledRequest\032" + "IsCatalogJanitorEnabled\022\037.IsCatalogJanit" +
" .IsCatalogJanitorEnabledResponse\022L\n\021Exe" + "orEnabledRequest\032 .IsCatalogJanitorEnabl" +
"cMasterService\022\032.CoprocessorServiceReque" + "edResponse\022L\n\021ExecMasterService\022\032.Coproc" +
"st\032\033.CoprocessorServiceResponse\022/\n\010Snaps" + "essorServiceRequest\032\033.CoprocessorService" +
"hot\022\020.SnapshotRequest\032\021.SnapshotResponse" + "Response\022/\n\010Snapshot\022\020.SnapshotRequest\032\021" +
"\022V\n\025GetCompletedSnapshots\022\035.GetCompleted" + ".SnapshotResponse\022V\n\025GetCompletedSnapsho" +
"SnapshotsRequest\032\036.GetCompletedSnapshots" + "ts\022\035.GetCompletedSnapshotsRequest\032\036.GetC" +
"Response\022A\n\016DeleteSnapshot\022\026.DeleteSnaps" + "ompletedSnapshotsResponse\022A\n\016DeleteSnaps" +
"hotRequest\032\027.DeleteSnapshotResponse\022A\n\016I", "hot\022\026.DeleteSnapshotRequest\032\027.DeleteSnap",
"sSnapshotDone\022\026.IsSnapshotDoneRequest\032\027." + "shotResponse\022A\n\016IsSnapshotDone\022\026.IsSnaps" +
"IsSnapshotDoneResponse\022D\n\017RestoreSnapsho" + "hotDoneRequest\032\027.IsSnapshotDoneResponse\022" +
"t\022\027.RestoreSnapshotRequest\032\030.RestoreSnap" + "D\n\017RestoreSnapshot\022\027.RestoreSnapshotRequ" +
"shotResponse\022V\n\025IsRestoreSnapshotDone\022\035." + "est\032\030.RestoreSnapshotResponse\022V\n\025IsResto" +
"IsRestoreSnapshotDoneRequest\032\036.IsRestore" + "reSnapshotDone\022\035.IsRestoreSnapshotDoneRe" +
"SnapshotDoneResponse\022>\n\rExecProcedure\022\025." + "quest\032\036.IsRestoreSnapshotDoneResponse\022>\n" +
"ExecProcedureRequest\032\026.ExecProcedureResp" + "\rExecProcedure\022\025.ExecProcedureRequest\032\026." +
"onse\022E\n\024ExecProcedureWithRet\022\025.ExecProce" + "ExecProcedureResponse\022E\n\024ExecProcedureWi" +
"dureRequest\032\026.ExecProcedureResponse\022D\n\017I" + "thRet\022\025.ExecProcedureRequest\032\026.ExecProce" +
"sProcedureDone\022\027.IsProcedureDoneRequest\032", "dureResponse\022D\n\017IsProcedureDone\022\027.IsProc",
"\030.IsProcedureDoneResponse\022D\n\017ModifyNames" + "edureDoneRequest\032\030.IsProcedureDoneRespon" +
"pace\022\027.ModifyNamespaceRequest\032\030.ModifyNa" + "se\022D\n\017ModifyNamespace\022\027.ModifyNamespaceR" +
"mespaceResponse\022D\n\017CreateNamespace\022\027.Cre" + "equest\032\030.ModifyNamespaceResponse\022D\n\017Crea" +
"ateNamespaceRequest\032\030.CreateNamespaceRes" + "teNamespace\022\027.CreateNamespaceRequest\032\030.C" +
"ponse\022D\n\017DeleteNamespace\022\027.DeleteNamespa" + "reateNamespaceResponse\022D\n\017DeleteNamespac" +
"ceRequest\032\030.DeleteNamespaceResponse\022Y\n\026G" + "e\022\027.DeleteNamespaceRequest\032\030.DeleteNames" +
"etNamespaceDescriptor\022\036.GetNamespaceDesc" + "paceResponse\022Y\n\026GetNamespaceDescriptor\022\036" +
"riptorRequest\032\037.GetNamespaceDescriptorRe" + ".GetNamespaceDescriptorRequest\032\037.GetName" +
"sponse\022_\n\030ListNamespaceDescriptors\022 .Lis" + "spaceDescriptorResponse\022_\n\030ListNamespace" +
"tNamespaceDescriptorsRequest\032!.ListNames", "Descriptors\022 .ListNamespaceDescriptorsRe",
"paceDescriptorsResponse\022t\n\037ListTableDesc" + "quest\032!.ListNamespaceDescriptorsResponse" +
"riptorsByNamespace\022\'.ListTableDescriptor" + "\022t\n\037ListTableDescriptorsByNamespace\022\'.Li" +
"sByNamespaceRequest\032(.ListTableDescripto" + "stTableDescriptorsByNamespaceRequest\032(.L" +
"rsByNamespaceResponse\022b\n\031ListTableNamesB" + "istTableDescriptorsByNamespaceResponse\022b" +
"yNamespace\022!.ListTableNamesByNamespaceRe" + "\n\031ListTableNamesByNamespace\022!.ListTableN" +
"quest\032\".ListTableNamesByNamespaceRespons" + "amesByNamespaceRequest\032\".ListTableNamesB" +
"e\022>\n\rGetTableState\022\025.GetTableStateReques" + "yNamespaceResponse\022>\n\rGetTableState\022\025.Ge" +
"t\032\026.GetTableStateResponse\022/\n\010SetQuota\022\020." + "tTableStateRequest\032\026.GetTableStateRespon" +
"SetQuotaRequest\032\021.SetQuotaResponse\022f\n\037ge" + "se\022/\n\010SetQuota\022\020.SetQuotaRequest\032\021.SetQu" +
"tLastMajorCompactionTimestamp\022 .MajorCom", "otaResponse\022f\n\037getLastMajorCompactionTim",
"pactionTimestampRequest\032!.MajorCompactio" + "estamp\022 .MajorCompactionTimestampRequest" +
"nTimestampResponse\022x\n(getLastMajorCompac" + "\032!.MajorCompactionTimestampResponse\022x\n(g" +
"tionTimestampForRegion\022).MajorCompaction" + "etLastMajorCompactionTimestampForRegion\022" +
"TimestampForRegionRequest\032!.MajorCompact" + ").MajorCompactionTimestampForRegionReque" +
"ionTimestampResponse\022M\n\022getProcedureResu" + "st\032!.MajorCompactionTimestampResponse\022M\n" +
"lt\022\032.GetProcedureResultRequest\032\033.GetProc" + "\022getProcedureResult\022\032.GetProcedureResult" +
"edureResultResponseBB\n*org.apache.hadoop" + "Request\032\033.GetProcedureResultResponseBB\n*" +
".hbase.protobuf.generatedB\014MasterProtosH" + "org.apache.hadoop.hbase.protobuf.generat" +
"\001\210\001\001\240\001\001" "edB\014MasterProtosH\001\210\001\001\240\001\001"
}; };
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@ -53616,7 +53712,7 @@ public final class MasterProtos {
internal_static_ModifyTableResponse_fieldAccessorTable = new internal_static_ModifyTableResponse_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable( com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_ModifyTableResponse_descriptor, internal_static_ModifyTableResponse_descriptor,
new java.lang.String[] { }); new java.lang.String[] { "ProcId", });
internal_static_CreateNamespaceRequest_descriptor = internal_static_CreateNamespaceRequest_descriptor =
getDescriptor().getMessageTypes().get(28); getDescriptor().getMessageTypes().get(28);
internal_static_CreateNamespaceRequest_fieldAccessorTable = new internal_static_CreateNamespaceRequest_fieldAccessorTable = new

View File

@ -151,6 +151,7 @@ message ModifyTableRequest {
} }
message ModifyTableResponse { message ModifyTableResponse {
optional uint64 proc_id = 1;
} }
/* Namespace-level protobufs */ /* Namespace-level protobufs */

View File

@ -1784,7 +1784,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
} }
@Override @Override
public void modifyTable(final TableName tableName, final HTableDescriptor descriptor) public long modifyTable(final TableName tableName, final HTableDescriptor descriptor)
throws IOException { throws IOException {
checkInitialized(); checkInitialized();
sanityCheckTableDescriptor(descriptor); sanityCheckTableDescriptor(descriptor);
@ -1803,6 +1803,8 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
if (cpHost != null) { if (cpHost != null) {
cpHost.postModifyTable(tableName, descriptor); cpHost.postModifyTable(tableName, descriptor);
} }
return procId;
} }
@Override @Override

View File

@ -129,7 +129,7 @@ public interface MasterServices extends Server {
* @param descriptor The updated table descriptor * @param descriptor The updated table descriptor
* @throws IOException * @throws IOException
*/ */
void modifyTable(final TableName tableName, final HTableDescriptor descriptor) long modifyTable(final TableName tableName, final HTableDescriptor descriptor)
throws IOException; throws IOException;
/** /**

View File

@ -438,8 +438,10 @@ public class TestCatalogJanitor {
@Override @Override
public void modifyTable(TableName tableName, HTableDescriptor descriptor) public long modifyTable(TableName tableName, HTableDescriptor descriptor)
throws IOException { } throws IOException {
return -1;
}
@Override @Override
public long enableTable(TableName tableName) throws IOException { public long enableTable(TableName tableName) throws IOException {