diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java index 2f38b3e..2ee1e50 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java @@ -638,7 +638,7 @@ public final class ProtobufUtil { * @param cellScanner * @param proto the protocol buffer Mutate to convert * @return the converted client Append - * @throws IOException + * @throws IOException */ public static Append toAppend(final MutationProto proto, final CellScanner cellScanner) throws IOException { @@ -1603,9 +1603,9 @@ public final class ProtobufUtil { * @throws IOException */ public static void openRegion(final AdminService.BlockingInterface admin, - final HRegionInfo region) throws IOException { + ServerName server, final HRegionInfo region) throws IOException { OpenRegionRequest request = - RequestConverter.buildOpenRegionRequest(region, -1, null); + RequestConverter.buildOpenRegionRequest(server, region, -1, null); try { admin.openRegion(null, request); } catch (ServiceException se) { @@ -2501,7 +2501,7 @@ public final class ProtobufUtil { /** * Convert a protocol buffer CellVisibility to a client CellVisibility - * + * * @param proto * @return the converted client CellVisibility */ @@ -2512,7 +2512,7 @@ public final class ProtobufUtil { /** * Convert a protocol buffer CellVisibility bytes to a client CellVisibility - * + * * @param protoBytes * @return the converted client CellVisibility * @throws DeserializationException @@ -2531,7 +2531,7 @@ public final class ProtobufUtil { /** * Create a protocol buffer CellVisibility based on a client CellVisibility. - * + * * @param cellVisibility * @return a protocol buffer CellVisibility */ @@ -2543,7 +2543,7 @@ public final class ProtobufUtil { /** * Convert a protocol buffer Authorizations to a client Authorizations - * + * * @param proto * @return the converted client Authorizations */ @@ -2554,7 +2554,7 @@ public final class ProtobufUtil { /** * Convert a protocol buffer Authorizations bytes to a client Authorizations - * + * * @param protoBytes * @return the converted client Authorizations * @throws DeserializationException @@ -2573,7 +2573,7 @@ public final class ProtobufUtil { /** * Create a protocol buffer Authorizations based on a client Authorizations. - * + * * @param authorizations * @return a protocol buffer Authorizations */ diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java index 94d2e2e..fe37c0c 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java @@ -22,13 +22,13 @@ import java.util.List; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.hbase.CellScannable; -import org.apache.hadoop.hbase.HConstants; -import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Action; import org.apache.hadoop.hbase.client.Append; import org.apache.hadoop.hbase.client.Delete; @@ -710,15 +710,19 @@ public final class RequestConverter { /** * Create a protocol buffer OpenRegionRequest for a given region * + * @param server the serverName for the RPC * @param region the region to open - * @param versionOfOfflineNode that needs to be present in the offline node - * @param favoredNodes + * @param versionOfOfflineNode that needs to be present in the offline node + * @param favoredNodes * @return a protocol buffer OpenRegionRequest */ - public static OpenRegionRequest buildOpenRegionRequest( + public static OpenRegionRequest buildOpenRegionRequest(ServerName server, final HRegionInfo region, final int versionOfOfflineNode, List favoredNodes) { OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder(); builder.addOpenInfo(buildRegionOpenInfo(region, versionOfOfflineNode, favoredNodes)); + if (server != null) { + builder.setServer(ProtobufUtil.toServerName(server)); + } return builder.build(); } diff --git hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java index 54e8f32..9eb85ae 100644 --- hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java +++ hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/AdminProtos.java @@ -3856,6 +3856,20 @@ public final class AdminProtos { */ org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfoOrBuilder getOpenInfoOrBuilder( int index); + + // optional .ServerName server = 2; + /** + * optional .ServerName server = 2; + */ + boolean hasServer(); + /** + * optional .ServerName server = 2; + */ + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer(); + /** + * optional .ServerName server = 2; + */ + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder(); } /** * Protobuf type {@code OpenRegionRequest} @@ -3916,6 +3930,19 @@ public final class AdminProtos { openInfo_.add(input.readMessage(org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo.PARSER, extensionRegistry)); break; } + case 18: { + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = server_.toBuilder(); + } + server_ = input.readMessage(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(server_); + server_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -4989,6 +5016,7 @@ public final class AdminProtos { // @@protoc_insertion_point(class_scope:OpenRegionRequest.RegionOpenInfo) } + private int bitField0_; // repeated .OpenRegionRequest.RegionOpenInfo open_info = 1; public static final int OPEN_INFO_FIELD_NUMBER = 1; private java.util.List openInfo_; @@ -5025,8 +5053,31 @@ public final class AdminProtos { return openInfo_.get(index); } + // optional .ServerName server = 2; + public static final int SERVER_FIELD_NUMBER = 2; + private org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName server_; + /** + * optional .ServerName server = 2; + */ + public boolean hasServer() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .ServerName server = 2; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer() { + return server_; + } + /** + * optional .ServerName server = 2; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder() { + return server_; + } + private void initFields() { openInfo_ = java.util.Collections.emptyList(); + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -5039,6 +5090,12 @@ public final class AdminProtos { return false; } } + if (hasServer()) { + if (!getServer().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -5049,6 +5106,9 @@ public final class AdminProtos { for (int i = 0; i < openInfo_.size(); i++) { output.writeMessage(1, openInfo_.get(i)); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(2, server_); + } getUnknownFields().writeTo(output); } @@ -5062,6 +5122,10 @@ public final class AdminProtos { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, openInfo_.get(i)); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, server_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -5087,6 +5151,11 @@ public final class AdminProtos { boolean result = true; result = result && getOpenInfoList() .equals(other.getOpenInfoList()); + result = result && (hasServer() == other.hasServer()); + if (hasServer()) { + result = result && getServer() + .equals(other.getServer()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -5104,6 +5173,10 @@ public final class AdminProtos { hash = (37 * hash) + OPEN_INFO_FIELD_NUMBER; hash = (53 * hash) + getOpenInfoList().hashCode(); } + if (hasServer()) { + hash = (37 * hash) + SERVER_FIELD_NUMBER; + hash = (53 * hash) + getServer().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -5206,6 +5279,7 @@ public final class AdminProtos { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { getOpenInfoFieldBuilder(); + getServerFieldBuilder(); } } private static Builder create() { @@ -5220,6 +5294,12 @@ public final class AdminProtos { } else { openInfoBuilder_.clear(); } + if (serverBuilder_ == null) { + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + } else { + serverBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); return this; } @@ -5247,6 +5327,7 @@ public final class AdminProtos { public org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest buildPartial() { org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest result = new org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest(this); int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (openInfoBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001)) { openInfo_ = java.util.Collections.unmodifiableList(openInfo_); @@ -5256,6 +5337,15 @@ public final class AdminProtos { } else { result.openInfo_ = openInfoBuilder_.build(); } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000001; + } + if (serverBuilder_ == null) { + result.server_ = server_; + } else { + result.server_ = serverBuilder_.build(); + } + result.bitField0_ = to_bitField0_; onBuilt(); return result; } @@ -5297,6 +5387,9 @@ public final class AdminProtos { } } } + if (other.hasServer()) { + mergeServer(other.getServer()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -5308,6 +5401,12 @@ public final class AdminProtos { return false; } } + if (hasServer()) { + if (!getServer().isInitialized()) { + + return false; + } + } return true; } @@ -5570,6 +5669,123 @@ public final class AdminProtos { return openInfoBuilder_; } + // optional .ServerName server = 2; + private org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder> serverBuilder_; + /** + * optional .ServerName server = 2; + */ + public boolean hasServer() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .ServerName server = 2; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer() { + if (serverBuilder_ == null) { + return server_; + } else { + return serverBuilder_.getMessage(); + } + } + /** + * optional .ServerName server = 2; + */ + public Builder setServer(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName value) { + if (serverBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + server_ = value; + onChanged(); + } else { + serverBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .ServerName server = 2; + */ + public Builder setServer( + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder builderForValue) { + if (serverBuilder_ == null) { + server_ = builderForValue.build(); + onChanged(); + } else { + serverBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .ServerName server = 2; + */ + public Builder mergeServer(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName value) { + if (serverBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + server_ != org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance()) { + server_ = + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.newBuilder(server_).mergeFrom(value).buildPartial(); + } else { + server_ = value; + } + onChanged(); + } else { + serverBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + return this; + } + /** + * optional .ServerName server = 2; + */ + public Builder clearServer() { + if (serverBuilder_ == null) { + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + onChanged(); + } else { + serverBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + /** + * optional .ServerName server = 2; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder getServerBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getServerFieldBuilder().getBuilder(); + } + /** + * optional .ServerName server = 2; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder() { + if (serverBuilder_ != null) { + return serverBuilder_.getMessageOrBuilder(); + } else { + return server_; + } + } + /** + * optional .ServerName server = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder> + getServerFieldBuilder() { + if (serverBuilder_ == null) { + serverBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder>( + server_, + getParentForChildren(), + isClean()); + server_ = null; + } + return serverBuilder_; + } + // @@protoc_insertion_point(builder_scope:OpenRegionRequest) } @@ -6243,6 +6459,20 @@ public final class AdminProtos { * optional .ServerName destination_server = 4; */ org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getDestinationServerOrBuilder(); + + // optional .ServerName server = 5; + /** + * optional .ServerName server = 5; + */ + boolean hasServer(); + /** + * optional .ServerName server = 5; + */ + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer(); + /** + * optional .ServerName server = 5; + */ + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder(); } /** * Protobuf type {@code CloseRegionRequest} @@ -6337,6 +6567,19 @@ public final class AdminProtos { bitField0_ |= 0x00000008; break; } + case 42: { + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = server_.toBuilder(); + } + server_ = input.readMessage(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(server_); + server_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -6453,11 +6696,34 @@ public final class AdminProtos { return destinationServer_; } + // optional .ServerName server = 5; + public static final int SERVER_FIELD_NUMBER = 5; + private org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName server_; + /** + * optional .ServerName server = 5; + */ + public boolean hasServer() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .ServerName server = 5; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer() { + return server_; + } + /** + * optional .ServerName server = 5; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder() { + return server_; + } + private void initFields() { region_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.getDefaultInstance(); versionOfClosingNode_ = 0; transitionInZK_ = true; destinationServer_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -6478,6 +6744,12 @@ public final class AdminProtos { return false; } } + if (hasServer()) { + if (!getServer().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -6497,6 +6769,9 @@ public final class AdminProtos { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(4, destinationServer_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, server_); + } getUnknownFields().writeTo(output); } @@ -6522,6 +6797,10 @@ public final class AdminProtos { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, destinationServer_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, server_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -6565,6 +6844,11 @@ public final class AdminProtos { result = result && getDestinationServer() .equals(other.getDestinationServer()); } + result = result && (hasServer() == other.hasServer()); + if (hasServer()) { + result = result && getServer() + .equals(other.getServer()); + } result = result && getUnknownFields().equals(other.getUnknownFields()); return result; @@ -6594,6 +6878,10 @@ public final class AdminProtos { hash = (37 * hash) + DESTINATION_SERVER_FIELD_NUMBER; hash = (53 * hash) + getDestinationServer().hashCode(); } + if (hasServer()) { + hash = (37 * hash) + SERVER_FIELD_NUMBER; + hash = (53 * hash) + getServer().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -6703,6 +6991,7 @@ public final class AdminProtos { if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { getRegionFieldBuilder(); getDestinationServerFieldBuilder(); + getServerFieldBuilder(); } } private static Builder create() { @@ -6727,6 +7016,12 @@ public final class AdminProtos { destinationServerBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); + if (serverBuilder_ == null) { + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + } else { + serverBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -6779,6 +7074,14 @@ public final class AdminProtos { } else { result.destinationServer_ = destinationServerBuilder_.build(); } + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + if (serverBuilder_ == null) { + result.server_ = server_; + } else { + result.server_ = serverBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -6807,6 +7110,9 @@ public final class AdminProtos { if (other.hasDestinationServer()) { mergeDestinationServer(other.getDestinationServer()); } + if (other.hasServer()) { + mergeServer(other.getServer()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -6826,6 +7132,12 @@ public final class AdminProtos { return false; } } + if (hasServer()) { + if (!getServer().isInitialized()) { + + return false; + } + } return true; } @@ -7148,6 +7460,123 @@ public final class AdminProtos { return destinationServerBuilder_; } + // optional .ServerName server = 5; + private org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder> serverBuilder_; + /** + * optional .ServerName server = 5; + */ + public boolean hasServer() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .ServerName server = 5; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName getServer() { + if (serverBuilder_ == null) { + return server_; + } else { + return serverBuilder_.getMessage(); + } + } + /** + * optional .ServerName server = 5; + */ + public Builder setServer(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName value) { + if (serverBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + server_ = value; + onChanged(); + } else { + serverBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .ServerName server = 5; + */ + public Builder setServer( + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder builderForValue) { + if (serverBuilder_ == null) { + server_ = builderForValue.build(); + onChanged(); + } else { + serverBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .ServerName server = 5; + */ + public Builder mergeServer(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName value) { + if (serverBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + server_ != org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance()) { + server_ = + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.newBuilder(server_).mergeFrom(value).buildPartial(); + } else { + server_ = value; + } + onChanged(); + } else { + serverBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .ServerName server = 5; + */ + public Builder clearServer() { + if (serverBuilder_ == null) { + server_ = org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.getDefaultInstance(); + onChanged(); + } else { + serverBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + /** + * optional .ServerName server = 5; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder getServerBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return getServerFieldBuilder().getBuilder(); + } + /** + * optional .ServerName server = 5; + */ + public org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder getServerOrBuilder() { + if (serverBuilder_ != null) { + return serverBuilder_.getMessageOrBuilder(); + } else { + return server_; + } + } + /** + * optional .ServerName server = 5; + */ + private com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder> + getServerFieldBuilder() { + if (serverBuilder_ == null) { + serverBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName.Builder, org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerNameOrBuilder>( + server_, + getParentForChildren(), + isClean()); + server_ = null; + } + return serverBuilder_; + } + // @@protoc_insertion_point(builder_scope:CloseRegionRequest) } @@ -20919,76 +21348,77 @@ public final class AdminProtos { "FileResponse\022\022\n\nstore_file\030\001 \003(\t\"\030\n\026GetO" + "nlineRegionRequest\";\n\027GetOnlineRegionRes" + "ponse\022 \n\013region_info\030\001 \003(\0132\013.RegionInfo\"" + - "\275\001\n\021OpenRegionRequest\0224\n\topen_info\030\001 \003(\013" + - "2!.OpenRegionRequest.RegionOpenInfo\032r\n\016R" + - "egionOpenInfo\022\033\n\006region\030\001 \002(\0132\013.RegionIn" + - "fo\022\037\n\027version_of_offline_node\030\002 \001(\r\022\"\n\rf" + - "avored_nodes\030\003 \003(\0132\013.ServerName\"\235\001\n\022Open" + - "RegionResponse\022=\n\ropening_state\030\001 \003(\0162&.", - "OpenRegionResponse.RegionOpeningState\"H\n" + - "\022RegionOpeningState\022\n\n\006OPENED\020\000\022\022\n\016ALREA" + - "DY_OPENED\020\001\022\022\n\016FAILED_OPENING\020\002\"\240\001\n\022Clos" + - "eRegionRequest\022 \n\006region\030\001 \002(\0132\020.RegionS" + - "pecifier\022\037\n\027version_of_closing_node\030\002 \001(" + - "\r\022\036\n\020transition_in_ZK\030\003 \001(\010:\004true\022\'\n\022des" + - "tination_server\030\004 \001(\0132\013.ServerName\"%\n\023Cl" + - "oseRegionResponse\022\016\n\006closed\030\001 \002(\010\"P\n\022Flu" + - "shRegionRequest\022 \n\006region\030\001 \002(\0132\020.Region" + - "Specifier\022\030\n\020if_older_than_ts\030\002 \001(\004\"?\n\023F", - "lushRegionResponse\022\027\n\017last_flush_time\030\001 " + - "\002(\004\022\017\n\007flushed\030\002 \001(\010\"K\n\022SplitRegionReque" + - "st\022 \n\006region\030\001 \002(\0132\020.RegionSpecifier\022\023\n\013" + - "split_point\030\002 \001(\014\"\025\n\023SplitRegionResponse" + - "\"W\n\024CompactRegionRequest\022 \n\006region\030\001 \002(\013" + - "2\020.RegionSpecifier\022\r\n\005major\030\002 \001(\010\022\016\n\006fam" + - "ily\030\003 \001(\014\"\027\n\025CompactRegionResponse\"\262\001\n\031U" + - "pdateFavoredNodesRequest\022@\n\013update_info\030" + - "\001 \003(\0132+.UpdateFavoredNodesRequest.Region" + - "UpdateInfo\032S\n\020RegionUpdateInfo\022\033\n\006region", - "\030\001 \002(\0132\013.RegionInfo\022\"\n\rfavored_nodes\030\002 \003" + - "(\0132\013.ServerName\".\n\032UpdateFavoredNodesRes" + - "ponse\022\020\n\010response\030\001 \001(\r\"v\n\023MergeRegionsR" + - "equest\022\"\n\010region_a\030\001 \002(\0132\020.RegionSpecifi" + - "er\022\"\n\010region_b\030\002 \002(\0132\020.RegionSpecifier\022\027" + - "\n\010forcible\030\003 \001(\010:\005false\"\026\n\024MergeRegionsR" + - "esponse\"X\n\010WALEntry\022\024\n\003key\030\001 \002(\0132\007.WALKe" + - "y\022\027\n\017key_value_bytes\030\002 \003(\014\022\035\n\025associated" + - "_cell_count\030\003 \001(\005\"4\n\030ReplicateWALEntryRe" + - "quest\022\030\n\005entry\030\001 \003(\0132\t.WALEntry\"\033\n\031Repli", - "cateWALEntryResponse\"\026\n\024RollWALWriterReq" + - "uest\"0\n\025RollWALWriterResponse\022\027\n\017region_" + - "to_flush\030\001 \003(\014\"#\n\021StopServerRequest\022\016\n\006r" + - "eason\030\001 \002(\t\"\024\n\022StopServerResponse\"\026\n\024Get" + - "ServerInfoRequest\"B\n\nServerInfo\022 \n\013serve" + - "r_name\030\001 \002(\0132\013.ServerName\022\022\n\nwebui_port\030" + - "\002 \001(\r\"9\n\025GetServerInfoResponse\022 \n\013server" + - "_info\030\001 \002(\0132\013.ServerInfo2\306\007\n\014AdminServic" + - "e\022>\n\rGetRegionInfo\022\025.GetRegionInfoReques" + - "t\032\026.GetRegionInfoResponse\022;\n\014GetStoreFil", - "e\022\024.GetStoreFileRequest\032\025.GetStoreFileRe" + - "sponse\022D\n\017GetOnlineRegion\022\027.GetOnlineReg" + - "ionRequest\032\030.GetOnlineRegionResponse\0225\n\n" + - "OpenRegion\022\022.OpenRegionRequest\032\023.OpenReg" + - "ionResponse\0228\n\013CloseRegion\022\023.CloseRegion" + - "Request\032\024.CloseRegionResponse\0228\n\013FlushRe" + - "gion\022\023.FlushRegionRequest\032\024.FlushRegionR" + - "esponse\0228\n\013SplitRegion\022\023.SplitRegionRequ" + - "est\032\024.SplitRegionResponse\022>\n\rCompactRegi" + - "on\022\025.CompactRegionRequest\032\026.CompactRegio", - "nResponse\022;\n\014MergeRegions\022\024.MergeRegions" + - "Request\032\025.MergeRegionsResponse\022J\n\021Replic" + - "ateWALEntry\022\031.ReplicateWALEntryRequest\032\032" + - ".ReplicateWALEntryResponse\022?\n\006Replay\022\031.R" + - "eplicateWALEntryRequest\032\032.ReplicateWALEn" + - "tryResponse\022>\n\rRollWALWriter\022\025.RollWALWr" + - "iterRequest\032\026.RollWALWriterResponse\022>\n\rG" + - "etServerInfo\022\025.GetServerInfoRequest\032\026.Ge" + - "tServerInfoResponse\0225\n\nStopServer\022\022.Stop" + - "ServerRequest\032\023.StopServerResponse\022M\n\022Up", - "dateFavoredNodes\022\032.UpdateFavoredNodesReq" + - "uest\032\033.UpdateFavoredNodesResponseBA\n*org" + - ".apache.hadoop.hbase.protobuf.generatedB" + - "\013AdminProtosH\001\210\001\001\240\001\001" + "\332\001\n\021OpenRegionRequest\0224\n\topen_info\030\001 \003(\013" + + "2!.OpenRegionRequest.RegionOpenInfo\022\033\n\006s" + + "erver\030\002 \001(\0132\013.ServerName\032r\n\016RegionOpenIn" + + "fo\022\033\n\006region\030\001 \002(\0132\013.RegionInfo\022\037\n\027versi" + + "on_of_offline_node\030\002 \001(\r\022\"\n\rfavored_node" + + "s\030\003 \003(\0132\013.ServerName\"\235\001\n\022OpenRegionRespo", + "nse\022=\n\ropening_state\030\001 \003(\0162&.OpenRegionR" + + "esponse.RegionOpeningState\"H\n\022RegionOpen" + + "ingState\022\n\n\006OPENED\020\000\022\022\n\016ALREADY_OPENED\020\001" + + "\022\022\n\016FAILED_OPENING\020\002\"\275\001\n\022CloseRegionRequ" + + "est\022 \n\006region\030\001 \002(\0132\020.RegionSpecifier\022\037\n" + + "\027version_of_closing_node\030\002 \001(\r\022\036\n\020transi" + + "tion_in_ZK\030\003 \001(\010:\004true\022\'\n\022destination_se" + + "rver\030\004 \001(\0132\013.ServerName\022\033\n\006server\030\005 \001(\0132" + + "\013.ServerName\"%\n\023CloseRegionResponse\022\016\n\006c" + + "losed\030\001 \002(\010\"P\n\022FlushRegionRequest\022 \n\006reg", + "ion\030\001 \002(\0132\020.RegionSpecifier\022\030\n\020if_older_" + + "than_ts\030\002 \001(\004\"?\n\023FlushRegionResponse\022\027\n\017" + + "last_flush_time\030\001 \002(\004\022\017\n\007flushed\030\002 \001(\010\"K" + + "\n\022SplitRegionRequest\022 \n\006region\030\001 \002(\0132\020.R" + + "egionSpecifier\022\023\n\013split_point\030\002 \001(\014\"\025\n\023S" + + "plitRegionResponse\"W\n\024CompactRegionReque" + + "st\022 \n\006region\030\001 \002(\0132\020.RegionSpecifier\022\r\n\005" + + "major\030\002 \001(\010\022\016\n\006family\030\003 \001(\014\"\027\n\025CompactRe" + + "gionResponse\"\262\001\n\031UpdateFavoredNodesReque" + + "st\022@\n\013update_info\030\001 \003(\0132+.UpdateFavoredN", + "odesRequest.RegionUpdateInfo\032S\n\020RegionUp" + + "dateInfo\022\033\n\006region\030\001 \002(\0132\013.RegionInfo\022\"\n" + + "\rfavored_nodes\030\002 \003(\0132\013.ServerName\".\n\032Upd" + + "ateFavoredNodesResponse\022\020\n\010response\030\001 \001(" + + "\r\"v\n\023MergeRegionsRequest\022\"\n\010region_a\030\001 \002" + + "(\0132\020.RegionSpecifier\022\"\n\010region_b\030\002 \002(\0132\020" + + ".RegionSpecifier\022\027\n\010forcible\030\003 \001(\010:\005fals" + + "e\"\026\n\024MergeRegionsResponse\"X\n\010WALEntry\022\024\n" + + "\003key\030\001 \002(\0132\007.WALKey\022\027\n\017key_value_bytes\030\002" + + " \003(\014\022\035\n\025associated_cell_count\030\003 \001(\005\"4\n\030R", + "eplicateWALEntryRequest\022\030\n\005entry\030\001 \003(\0132\t" + + ".WALEntry\"\033\n\031ReplicateWALEntryResponse\"\026" + + "\n\024RollWALWriterRequest\"0\n\025RollWALWriterR" + + "esponse\022\027\n\017region_to_flush\030\001 \003(\014\"#\n\021Stop" + + "ServerRequest\022\016\n\006reason\030\001 \002(\t\"\024\n\022StopSer" + + "verResponse\"\026\n\024GetServerInfoRequest\"B\n\nS" + + "erverInfo\022 \n\013server_name\030\001 \002(\0132\013.ServerN" + + "ame\022\022\n\nwebui_port\030\002 \001(\r\"9\n\025GetServerInfo" + + "Response\022 \n\013server_info\030\001 \002(\0132\013.ServerIn" + + "fo2\306\007\n\014AdminService\022>\n\rGetRegionInfo\022\025.G", + "etRegionInfoRequest\032\026.GetRegionInfoRespo" + + "nse\022;\n\014GetStoreFile\022\024.GetStoreFileReques" + + "t\032\025.GetStoreFileResponse\022D\n\017GetOnlineReg" + + "ion\022\027.GetOnlineRegionRequest\032\030.GetOnline" + + "RegionResponse\0225\n\nOpenRegion\022\022.OpenRegio" + + "nRequest\032\023.OpenRegionResponse\0228\n\013CloseRe" + + "gion\022\023.CloseRegionRequest\032\024.CloseRegionR" + + "esponse\0228\n\013FlushRegion\022\023.FlushRegionRequ" + + "est\032\024.FlushRegionResponse\0228\n\013SplitRegion" + + "\022\023.SplitRegionRequest\032\024.SplitRegionRespo", + "nse\022>\n\rCompactRegion\022\025.CompactRegionRequ" + + "est\032\026.CompactRegionResponse\022;\n\014MergeRegi" + + "ons\022\024.MergeRegionsRequest\032\025.MergeRegions" + + "Response\022J\n\021ReplicateWALEntry\022\031.Replicat" + + "eWALEntryRequest\032\032.ReplicateWALEntryResp" + + "onse\022?\n\006Replay\022\031.ReplicateWALEntryReques" + + "t\032\032.ReplicateWALEntryResponse\022>\n\rRollWAL" + + "Writer\022\025.RollWALWriterRequest\032\026.RollWALW" + + "riterResponse\022>\n\rGetServerInfo\022\025.GetServ" + + "erInfoRequest\032\026.GetServerInfoResponse\0225\n", + "\nStopServer\022\022.StopServerRequest\032\023.StopSe" + + "rverResponse\022M\n\022UpdateFavoredNodes\022\032.Upd" + + "ateFavoredNodesRequest\032\033.UpdateFavoredNo" + + "desResponseBA\n*org.apache.hadoop.hbase.p" + + "rotobuf.generatedB\013AdminProtosH\001\210\001\001\240\001\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -21036,7 +21466,7 @@ public final class AdminProtos { internal_static_OpenRegionRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_OpenRegionRequest_descriptor, - new java.lang.String[] { "OpenInfo", }); + new java.lang.String[] { "OpenInfo", "Server", }); internal_static_OpenRegionRequest_RegionOpenInfo_descriptor = internal_static_OpenRegionRequest_descriptor.getNestedTypes().get(0); internal_static_OpenRegionRequest_RegionOpenInfo_fieldAccessorTable = new @@ -21054,7 +21484,7 @@ public final class AdminProtos { internal_static_CloseRegionRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_CloseRegionRequest_descriptor, - new java.lang.String[] { "Region", "VersionOfClosingNode", "TransitionInZK", "DestinationServer", }); + new java.lang.String[] { "Region", "VersionOfClosingNode", "TransitionInZK", "DestinationServer", "Server", }); internal_static_CloseRegionResponse_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_CloseRegionResponse_fieldAccessorTable = new diff --git hbase-protocol/src/main/protobuf/Admin.proto hbase-protocol/src/main/protobuf/Admin.proto index c881851..0f017b8 100644 --- hbase-protocol/src/main/protobuf/Admin.proto +++ hbase-protocol/src/main/protobuf/Admin.proto @@ -68,6 +68,7 @@ message GetOnlineRegionResponse { message OpenRegionRequest { repeated RegionOpenInfo open_info = 1; + optional ServerName server = 2; message RegionOpenInfo { required RegionInfo region = 1; @@ -95,6 +96,7 @@ message CloseRegionRequest { optional uint32 version_of_closing_node = 2; optional bool transition_in_ZK = 3 [default = true]; optional ServerName destination_server = 4; + optional ServerName server = 5; } message CloseRegionResponse { diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index 8499520..cf089ea 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -623,7 +623,7 @@ public class ServerManager { return RegionOpeningState.FAILED_OPENING; } OpenRegionRequest request = - RequestConverter.buildOpenRegionRequest(region, versionOfOfflineNode, favoredNodes); + RequestConverter.buildOpenRegionRequest(server, region, versionOfOfflineNode, favoredNodes); try { OpenRegionResponse response = admin.openRegion(null, request); return ResponseConverter.getRegionOpeningState(response); @@ -685,6 +685,7 @@ public class ServerManager { region.getRegionNameAsString() + " failed because no RPC connection found to this server"); } + // TODO: send the serverName in the RPC return ProtobufUtil.closeRegion(admin, region.getRegionName(), versionOfClosingNode, dest, transitionInZK); } @@ -876,7 +877,7 @@ public class ServerManager { Map getRequeuedDeadServers() { return Collections.unmodifiableMap(this.requeuedDeadServers); } - + public boolean isServerOnline(ServerName serverName) { return serverName != null && onlineServers.containsKey(serverName); } @@ -964,7 +965,7 @@ public class ServerManager { } } } - + /** * To clear any dead server with same host name and port of any online server */ diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 951ef6d..415f7a8 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -625,7 +625,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa this.distributedLogReplay = this.conf.getBoolean(HConstants.DISTRIBUTED_LOG_REPLAY_KEY, HConstants.DEFAULT_DISTRIBUTED_LOG_REPLAY_CONFIG); - + this.rsInfo = RegionServerInfo.newBuilder(); // Put up the webui. Webui may come up on port other than configured if // that port is occupied. Adjust serverInfo if this is the case. @@ -3303,7 +3303,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa @Override public MultiResponse multi(final RpcController rpcc, final MultiRequest request) throws ServiceException { - + // rpc controller is how we bring in data via the back door; it is unprotobuf'ed data. // It is also the conduit via which we pass back data. PayloadCarryingRpcController controller = (PayloadCarryingRpcController)rpcc; @@ -3544,6 +3544,15 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa throw new ServiceException(ie); } requestCount.increment(); + if (request.hasServer() && this.serverNameFromMasterPOV != null) { + // check that we are the same server that this RPC is intended for. + ServerName rpcServerName = ProtobufUtil.toServerName(request.getServer()); + if (!this.serverNameFromMasterPOV.equals(rpcServerName)) { + throw new ServiceException(new DoNotRetryIOException("This RPC was intended for a " + + "different server: " + rpcServerName + ", this server is: " + + this.serverNameFromMasterPOV)); + } + } OpenRegionResponse.Builder builder = OpenRegionResponse.newBuilder(); final int regionCount = request.getOpenInfoCount(); final Map htds = @@ -3701,6 +3710,15 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa try { checkOpen(); + if (request.hasServer() && this.serverNameFromMasterPOV != null) { + // check that we are the same server that this RPC is intended for. + ServerName rpcServerName = ProtobufUtil.toServerName(request.getServer()); + if (!this.serverNameFromMasterPOV.equals(rpcServerName)) { + throw new ServiceException(new DoNotRetryIOException("This RPC was intended for a " + + "different server: " + rpcServerName + ", this server is: " + + this.serverNameFromMasterPOV)); + } + } final String encodedRegionName = ProtobufUtil.getRegionEncodedName(request.getRegion()); // Can be null if we're calling close on a region that's not online diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestScannersFromClientSide.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestScannersFromClientSide.java index 17a56b6..95aa4c7 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestScannersFromClientSide.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestScannersFromClientSide.java @@ -492,7 +492,7 @@ public class TestScannersFromClientSide { states.regionOffline(hri); states.updateRegionState(hri, State.OPENING); ZKAssign.createNodeOffline(zkw, hri, loc.getServerName()); - ProtobufUtil.openRegion(rs, hri); + ProtobufUtil.openRegion(rs, rs.getServerName(), hri); startTime = EnvironmentEdgeManager.currentTimeMillis(); while (true) { if (rs.getOnlineRegion(regionName) != null) { diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java index f10f91e..07be41d 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java @@ -337,7 +337,7 @@ public class TestMasterFailover { region = enabledRegions.remove(0); regionsThatShouldBeOnline.add(region); ZKAssign.createNodeOffline(zkw, region, serverName); - ProtobufUtil.openRegion(hrs, region); + ProtobufUtil.openRegion(hrs, hrs.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -352,7 +352,7 @@ public class TestMasterFailover { region = disabledRegions.remove(0); regionsThatShouldBeOffline.add(region); ZKAssign.createNodeOffline(zkw, region, serverName); - ProtobufUtil.openRegion(hrs, region); + ProtobufUtil.openRegion(hrs, hrs.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -736,7 +736,7 @@ public class TestMasterFailover { region = enabledRegions.remove(0); regionsThatShouldBeOnline.add(region); ZKAssign.createNodeOffline(zkw, region, deadServerName); - ProtobufUtil.openRegion(hrsDead, region); + ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -752,7 +752,7 @@ public class TestMasterFailover { region = disabledRegions.remove(0); regionsThatShouldBeOffline.add(region); ZKAssign.createNodeOffline(zkw, region, deadServerName); - ProtobufUtil.openRegion(hrsDead, region); + ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -772,7 +772,7 @@ public class TestMasterFailover { region = enabledRegions.remove(0); regionsThatShouldBeOnline.add(region); ZKAssign.createNodeOffline(zkw, region, deadServerName); - ProtobufUtil.openRegion(hrsDead, region); + ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -790,7 +790,7 @@ public class TestMasterFailover { region = disabledRegions.remove(0); regionsThatShouldBeOffline.add(region); ZKAssign.createNodeOffline(zkw, region, deadServerName); - ProtobufUtil.openRegion(hrsDead, region); + ProtobufUtil.openRegion(hrsDead, hrsDead.getServerName(), region); while (true) { byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName()); RegionTransition rt = RegionTransition.parseFrom(bytes); @@ -824,12 +824,12 @@ public class TestMasterFailover { log("Waiting for master to be ready"); assertTrue(cluster.waitForActiveAndReadyMaster()); log("Master is ready"); - + // Wait until SSH processing completed for dead server. while (master.getServerManager().areDeadServersInProgress()) { Thread.sleep(10); } - + // Failover should be completed, now wait for no RIT log("Waiting for no more RIT"); ZKAssign.blockUntilNoRIT(zkw); diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java index a16a4b2..c11cbc8 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java @@ -30,19 +30,19 @@ import java.util.Collection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.MediumTests; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableDescriptors; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Durability; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.client.Durability; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.regionserver.HRegionServer; import org.apache.hadoop.hbase.util.Bytes; @@ -230,7 +230,7 @@ public class TestZKBasedOpenCloseRegion { Whitebox.setInternalState(regionServer, "tableDescriptors", htd); Mockito.doThrow(new IOException()).when(htd).get((TableName) Mockito.any()); try { - ProtobufUtil.openRegion(regionServer, REGIONINFO); + ProtobufUtil.openRegion(regionServer, regionServer.getServerName(), REGIONINFO); fail("It should throw IOException "); } catch (IOException e) { } diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.java index 5d70b97..6c68bdd 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.java @@ -104,7 +104,7 @@ public class TestRegionServerNoMaster { // We reopen. We need a ZK node here, as a open is always triggered by a master. ZKAssign.createNodeOffline(HTU.getZooKeeperWatcher(), hri, getRS().getServerName()); // first version is '0' - AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(hri, 0, null); + AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(getRS().getServerName(), hri, 0, null); AdminProtos.OpenRegionResponse responseOpen = getRS().openRegion(null, orr); Assert.assertTrue(responseOpen.getOpeningStateCount() == 1); Assert.assertTrue(responseOpen.getOpeningState(0). @@ -223,7 +223,7 @@ public class TestRegionServerNoMaster { // We're sending multiple requests in a row. The region server must handle this nicely. for (int i = 0; i < 10; i++) { - AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(hri, 0, null); + AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(getRS().getServerName(), hri, 0, null); AdminProtos.OpenRegionResponse responseOpen = getRS().openRegion(null, orr); Assert.assertTrue(responseOpen.getOpeningStateCount() == 1); @@ -244,7 +244,7 @@ public class TestRegionServerNoMaster { try { // fake region to be closing now, need to clear state afterwards getRS().regionsInTransitionInRS.put(hri.getEncodedNameAsBytes(), Boolean.FALSE); - AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(hri, 0, null); + AdminProtos.OpenRegionRequest orr = RequestConverter.buildOpenRegionRequest(getRS().getServerName(), hri, 0, null); getRS().openRegion(null, orr); Assert.fail("The closing region should not be opened"); } catch (ServiceException se) {