Skip to content

Commit ae644a4

Browse files
PDavidstoty
authored andcommitted
HBASE-28865 Implement proper string builder for MoveRegionRequest in ProtobufUtil.getShortTextFormat (#6318)
Signed-off-by: Istvan Toth <stoty@apache.org> (cherry picked from commit f2e52f3)
1 parent fca09be commit ae644a4

File tree

2 files changed

+147
-1
lines changed

2 files changed

+147
-1
lines changed

hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2150,7 +2150,9 @@ public static RegionEventDescriptor toRegionEventDescriptor(EventType eventType,
21502150
* @return toString of passed <code>m</code>
21512151
*/
21522152
public static String getShortTextFormat(Message m) {
2153-
if (m == null) return "null";
2153+
if (m == null) {
2154+
return "null";
2155+
}
21542156
if (m instanceof ScanRequest) {
21552157
// This should be small and safe to output. No data.
21562158
return TextFormat.shortDebugString(m);
@@ -2192,6 +2194,8 @@ public static String getShortTextFormat(Message m) {
21922194
ClientProtos.CoprocessorServiceRequest r = (ClientProtos.CoprocessorServiceRequest) m;
21932195
return "coprocessorService= " + r.getCall().getServiceName() + ":"
21942196
+ r.getCall().getMethodName();
2197+
} else if (m instanceof MasterProtos.MoveRegionRequest) {
2198+
return TextFormat.shortDebugString(m);
21952199
}
21962200
return "TODO: " + m.getClass().toString();
21972201
}

hbase-client/src/test/java/org/apache/hadoop/hbase/shaded/protobuf/TestProtobufUtil.java

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@
6969
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
7070
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameBytesPair;
7171
import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos;
72+
import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos;
7273
import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos;
74+
import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;
7375

7476
@Category(SmallTests.class)
7577
public class TestProtobufUtil {
@@ -78,6 +80,11 @@ public class TestProtobufUtil {
7880
HBaseClassTestRule.forClass(TestProtobufUtil.class);
7981
private static final String TAG_STR = "tag-1";
8082
private static final byte TAG_TYPE = (byte) 10;
83+
private static final HBaseProtos.ServerName SERVER_NAME =
84+
HBaseProtos.ServerName.newBuilder().setHostName("a.b.com").build();
85+
private static final HBaseProtos.RegionSpecifier REGION =
86+
HBaseProtos.RegionSpecifier.newBuilder().setValue(ByteString.copyFromUtf8("test"))
87+
.setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.REGION_NAME).build();
8188

8289
public TestProtobufUtil() {
8390
}
@@ -623,4 +630,139 @@ public void testSlowLogParamsMutateRequest() {
623630
assertTrue(slowLogParams.getParams()
624631
.contains(Bytes.toStringBinary(mutationProto.getRow().toByteArray())));
625632
}
633+
634+
@Test
635+
public void testGetShortTextFormatNull() {
636+
String actual = ProtobufUtil.getShortTextFormat(null);
637+
assertNotNull(actual);
638+
assertEquals("null", actual);
639+
}
640+
641+
@Test
642+
public void testGetShortTextFormatScanRequest() {
643+
ClientProtos.ScanRequest.Builder builder = ClientProtos.ScanRequest.newBuilder();
644+
builder.setRegion(REGION);
645+
ClientProtos.ScanRequest scanRequest = builder.build();
646+
647+
String actual = ProtobufUtil.getShortTextFormat(scanRequest);
648+
649+
assertNotNull(actual);
650+
assertEquals("region { type: REGION_NAME value: \"test\" }", actual);
651+
}
652+
653+
@Test
654+
public void testGetShortTextFormatRegionServerReportRequest() {
655+
RegionServerStatusProtos.RegionServerReportRequest.Builder builder =
656+
RegionServerStatusProtos.RegionServerReportRequest.newBuilder();
657+
builder.setServer(SERVER_NAME);
658+
RegionServerStatusProtos.RegionServerReportRequest request = builder.build();
659+
660+
String actual = ProtobufUtil.getShortTextFormat(request);
661+
662+
assertNotNull(actual);
663+
assertEquals("server host_name: \"a.b.com\" load { numberOfRequests: 0 }", actual);
664+
}
665+
666+
@Test
667+
public void testGetShortTextFormatRegionServerStartupRequest() {
668+
RegionServerStatusProtos.RegionServerStartupRequest.Builder builder =
669+
RegionServerStatusProtos.RegionServerStartupRequest.newBuilder();
670+
builder.setPort(8080);
671+
builder.setServerCurrentTime(111111L);
672+
builder.setServerStartCode(15L);
673+
builder.setUseThisHostnameInstead("some-host-name");
674+
RegionServerStatusProtos.RegionServerStartupRequest regionServerStartupRequest =
675+
builder.build();
676+
677+
String actual = ProtobufUtil.getShortTextFormat(regionServerStartupRequest);
678+
679+
assertNotNull(actual);
680+
assertEquals("port: 8080 server_start_code: 15 server_current_time: 111111"
681+
+ " use_this_hostname_instead: \"some-host-name\"", actual);
682+
}
683+
684+
@Test
685+
public void testGetShortTextFormatMutationProto() {
686+
MutationProto mutationProto =
687+
ClientProtos.MutationProto.newBuilder().setRow(ByteString.copyFromUtf8("row123")).build();
688+
689+
String actual = ProtobufUtil.getShortTextFormat(mutationProto);
690+
691+
assertNotNull(actual);
692+
assertEquals("row=row123, type=APPEND", actual);
693+
}
694+
695+
@Test
696+
public void testGetShortTextFormatGetRequest() throws IOException {
697+
ClientProtos.GetRequest getRequest = ClientProtos.GetRequest.newBuilder().setRegion(REGION)
698+
.setGet(ProtobufUtil.toGet(new Get(Bytes.toBytes("foo")))).build();
699+
700+
String actual = ProtobufUtil.getShortTextFormat(getRequest);
701+
702+
assertNotNull(actual);
703+
assertEquals("region= test, row=foo", actual);
704+
}
705+
706+
@Test
707+
public void testGetShortTextFormatMultiRequest() throws IOException {
708+
ClientProtos.Action action = ClientProtos.Action.newBuilder()
709+
.setGet(ProtobufUtil.toGet(new Get(Bytes.toBytes("foo")))).build();
710+
ClientProtos.RegionAction regionAction =
711+
ClientProtos.RegionAction.newBuilder().addAction(action).setRegion(REGION).build();
712+
713+
ClientProtos.MultiRequest multiRequest =
714+
ClientProtos.MultiRequest.newBuilder().addRegionAction(regionAction).build();
715+
716+
String actual = ProtobufUtil.getShortTextFormat(multiRequest);
717+
718+
assertNotNull(actual);
719+
assertEquals("region= test, for 1 action(s) and 1st row key=foo", actual);
720+
}
721+
722+
@Test
723+
public void testGetShortTextFormatMutateRequest() throws IOException {
724+
ClientProtos.MutateRequest mutateRequest = ClientProtos.MutateRequest.newBuilder()
725+
.setMutation(
726+
ProtobufUtil.toMutation(MutationType.INCREMENT, new Increment(Bytes.toBytes("foo"))))
727+
.setRegion(REGION).build();
728+
729+
String actual = ProtobufUtil.getShortTextFormat(mutateRequest);
730+
731+
assertNotNull(actual);
732+
assertEquals("region= test, row=foo", actual);
733+
}
734+
735+
@Test
736+
public void testGetShortTextFormatCoprocessorServiceRequest() {
737+
ClientProtos.CoprocessorServiceCall call = ClientProtos.CoprocessorServiceCall.newBuilder()
738+
.setRow(ByteString.copyFrom(Bytes.toBytes("foo"))).setMethodName("awesomeMethod")
739+
.setServiceName("awesomeService")
740+
.setRequest(ByteString.copyFrom(Bytes.toBytes("foo-request"))).build();
741+
742+
ClientProtos.CoprocessorServiceRequest.Builder builder =
743+
ClientProtos.CoprocessorServiceRequest.newBuilder();
744+
builder.setRegion(REGION);
745+
builder.setCall(call);
746+
ClientProtos.CoprocessorServiceRequest coprocessorServiceRequest = builder.build();
747+
748+
String actual = ProtobufUtil.getShortTextFormat(coprocessorServiceRequest);
749+
750+
assertNotNull(actual);
751+
assertEquals("coprocessorService= awesomeService:awesomeMethod", actual);
752+
}
753+
754+
@Test
755+
public void testGetShortTextFormatMoveRegionRequest() {
756+
MasterProtos.MoveRegionRequest.Builder builder = MasterProtos.MoveRegionRequest.newBuilder();
757+
builder.setRegion(REGION);
758+
builder.setDestServerName(SERVER_NAME);
759+
MasterProtos.MoveRegionRequest moveRegionRequest = builder.build();
760+
761+
String actual = ProtobufUtil.getShortTextFormat(moveRegionRequest);
762+
763+
assertNotNull(actual);
764+
assertEquals(
765+
"region { type: REGION_NAME value: \"test\" } dest_server_name { host_name: \"a.b.com\" }",
766+
actual);
767+
}
626768
}

0 commit comments

Comments
 (0)