http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Comparator.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Comparator.proto b/hbase-native-client/src/hbase/if/Comparator.proto new file mode 100644 index 0000000..496b68d --- /dev/null +++ b/hbase-native-client/src/hbase/if/Comparator.proto @@ -0,0 +1,74 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are used for filters +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "ComparatorProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +// This file contains protocol buffers that are used for comparators (e.g. in filters) + +message Comparator { + required string name = 1; + optional bytes serialized_comparator = 2; +} + +message ByteArrayComparable { + optional bytes value = 1; +} + +message BinaryComparator { + required ByteArrayComparable comparable = 1; +} + +message LongComparator { + required ByteArrayComparable comparable = 1; +} + +message BinaryPrefixComparator { + required ByteArrayComparable comparable = 1; +} + +message BitComparator { + required ByteArrayComparable comparable = 1; + required BitwiseOp bitwise_op = 2; + + enum BitwiseOp { + AND = 1; + OR = 2; + XOR = 3; + } +} + +message NullComparator { +} + +message RegexStringComparator { + required string pattern = 1; + required int32 pattern_flags = 2; + required string charset = 3; + optional string engine = 4; +} + +message SubstringComparator { + required string substr = 1; +}
http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Encryption.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Encryption.proto b/hbase-native-client/src/hbase/if/Encryption.proto new file mode 100644 index 0000000..97ab5b2 --- /dev/null +++ b/hbase-native-client/src/hbase/if/Encryption.proto @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers used for encryption +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "EncryptionProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +message WrappedKey { + required string algorithm = 1; + required uint32 length = 2; + required bytes data = 3; + optional bytes iv = 4; + optional bytes hash = 5; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/ErrorHandling.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/ErrorHandling.proto b/hbase-native-client/src/hbase/if/ErrorHandling.proto new file mode 100644 index 0000000..be9a743 --- /dev/null +++ b/hbase-native-client/src/hbase/if/ErrorHandling.proto @@ -0,0 +1,58 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are used for error handling +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "ErrorHandlingProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +/** + * Protobuf version of a java.lang.StackTraceElement + * so we can serialize exceptions. + */ +message StackTraceElementMessage { + optional string declaring_class = 1; + optional string method_name = 2; + optional string file_name = 3; + optional int32 line_number = 4; +} + +/** + * Cause of a remote failure for a generic exception. Contains + * all the information for a generic exception as well as + * optional info about the error for generic info passing + * (which should be another protobuffed class). + */ +message GenericExceptionMessage { + optional string class_name = 1; + optional string message = 2; + optional bytes error_info = 3; + repeated StackTraceElementMessage trace = 4; +} + +/** + * Exception sent across the wire when a remote task needs + * to notify other tasks that it failed and why + */ +message ForeignExceptionMessage { + optional string source = 1; + optional GenericExceptionMessage generic_exception = 2; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/FS.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/FS.proto b/hbase-native-client/src/hbase/if/FS.proto new file mode 100644 index 0000000..9e93120 --- /dev/null +++ b/hbase-native-client/src/hbase/if/FS.proto @@ -0,0 +1,45 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are written into the filesystem +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "FSProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +/** + * The ${HBASE_ROOTDIR}/hbase.version file content + */ +message HBaseVersionFileContent { + required string version = 1; +} + +/** + * Reference file content used when we split an hfile under a region. + */ +message Reference { + required bytes splitkey = 1; + enum Range { + TOP = 0; + BOTTOM = 1; + } + required Range range = 2; +} + http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Filter.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Filter.proto b/hbase-native-client/src/hbase/if/Filter.proto new file mode 100644 index 0000000..1fa6697 --- /dev/null +++ b/hbase-native-client/src/hbase/if/Filter.proto @@ -0,0 +1,171 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are used for filters +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "FilterProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; +import "Comparator.proto"; + +message Filter { + required string name = 1; + optional bytes serialized_filter = 2; +} + +message ColumnCountGetFilter { + required int32 limit = 1; +} + +message ColumnPaginationFilter { + required int32 limit = 1; + optional int32 offset = 2; + optional bytes column_offset = 3; +} + +message ColumnPrefixFilter { + required bytes prefix = 1; +} + +message ColumnRangeFilter { + optional bytes min_column = 1; + optional bool min_column_inclusive = 2; + optional bytes max_column = 3; + optional bool max_column_inclusive = 4; +} + +message CompareFilter { + required CompareType compare_op = 1; + optional Comparator comparator = 2; +} + +message DependentColumnFilter { + required CompareFilter compare_filter = 1; + optional bytes column_family = 2; + optional bytes column_qualifier = 3; + optional bool drop_dependent_column = 4; +} + +message FamilyFilter { + required CompareFilter compare_filter = 1; +} + +message FilterList { + required Operator operator = 1; + repeated Filter filters = 2; + + enum Operator { + MUST_PASS_ALL = 1; + MUST_PASS_ONE = 2; + } +} + +message FilterWrapper { + required Filter filter = 1; +} + +message FirstKeyOnlyFilter { +} + +message FirstKeyValueMatchingQualifiersFilter { + repeated bytes qualifiers = 1; +} + +message FuzzyRowFilter { + repeated BytesBytesPair fuzzy_keys_data = 1; +} + +message InclusiveStopFilter { + optional bytes stop_row_key = 1; +} + +message KeyOnlyFilter { + required bool len_as_val = 1; +} + +message MultipleColumnPrefixFilter { + repeated bytes sorted_prefixes = 1; +} + +message PageFilter { + required int64 page_size = 1; +} + +message PrefixFilter { + optional bytes prefix = 1; +} + +message QualifierFilter { + required CompareFilter compare_filter = 1; +} + +message RandomRowFilter { + required float chance = 1; +} + +message RowFilter { + required CompareFilter compare_filter = 1; +} + +message SingleColumnValueExcludeFilter { + required SingleColumnValueFilter single_column_value_filter = 1; +} + +message SingleColumnValueFilter { + optional bytes column_family = 1; + optional bytes column_qualifier = 2; + required CompareType compare_op = 3; + required Comparator comparator = 4; + optional bool filter_if_missing = 5; + optional bool latest_version_only = 6; +} + +message SkipFilter { + required Filter filter = 1; +} + +message TimestampsFilter { + repeated int64 timestamps = 1 [packed=true]; + optional bool can_hint = 2; +} + +message ValueFilter { + required CompareFilter compare_filter = 1; +} + +message WhileMatchFilter { + required Filter filter = 1; +} +message FilterAllFilter { +} + +message RowRange { + optional bytes start_row = 1; + optional bool start_row_inclusive = 2; + optional bytes stop_row = 3; + optional bool stop_row_inclusive =4; +} + +message MultiRowRangeFilter { + repeated RowRange row_range_list = 1; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/HBase.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/HBase.proto b/hbase-native-client/src/hbase/if/HBase.proto new file mode 100644 index 0000000..c36b214 --- /dev/null +++ b/hbase-native-client/src/hbase/if/HBase.proto @@ -0,0 +1,253 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are shared throughout HBase +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "HBaseProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "Cell.proto"; + +/** + * Table Name + */ +message TableName { + required bytes namespace = 1; + required bytes qualifier = 2; +} + +/** + * Table Schema + * Inspired by the rest TableSchema + */ +message TableSchema { + optional TableName table_name = 1; + repeated BytesBytesPair attributes = 2; + repeated ColumnFamilySchema column_families = 3; + repeated NameStringPair configuration = 4; +} + +/** Denotes state of the table */ +message TableState { + // Table's current state + enum State { + ENABLED = 0; + DISABLED = 1; + DISABLING = 2; + ENABLING = 3; + } + // This is the table's state. + required State state = 1; +} + +/** + * Column Family Schema + * Inspired by the rest ColumSchemaMessage + */ +message ColumnFamilySchema { + required bytes name = 1; + repeated BytesBytesPair attributes = 2; + repeated NameStringPair configuration = 3; +} + +/** + * Protocol buffer version of HRegionInfo. + */ +message RegionInfo { + required uint64 region_id = 1; + required TableName table_name = 2; + optional bytes start_key = 3; + optional bytes end_key = 4; + optional bool offline = 5; + optional bool split = 6; + optional int32 replica_id = 7 [default = 0]; +} + +/** + * Protocol buffer for favored nodes + */ +message FavoredNodes { + repeated ServerName favored_node = 1; +} + +/** + * Container protocol buffer to specify a region. + * You can specify region by region name, or the hash + * of the region name, which is known as encoded + * region name. + */ +message RegionSpecifier { + required RegionSpecifierType type = 1; + required bytes value = 2; + + enum RegionSpecifierType { + // <tablename>,<startkey>,<regionId>.<encodedName> + REGION_NAME = 1; + + // hash of <tablename>,<startkey>,<regionId> + ENCODED_REGION_NAME = 2; + } +} + +/** + * A range of time. Both from and to are Java time + * stamp in milliseconds. If you don't specify a time + * range, it means all time. By default, if not + * specified, from = 0, and to = Long.MAX_VALUE + */ +message TimeRange { + optional uint64 from = 1; + optional uint64 to = 2; +} + +/* ColumnFamily Specific TimeRange */ +message ColumnFamilyTimeRange { + required bytes column_family = 1; + required TimeRange time_range = 2; +} + +/* Comparison operators */ +enum CompareType { + LESS = 0; + LESS_OR_EQUAL = 1; + EQUAL = 2; + NOT_EQUAL = 3; + GREATER_OR_EQUAL = 4; + GREATER = 5; + NO_OP = 6; +} + +/** + * Protocol buffer version of ServerName + */ +message ServerName { + required string host_name = 1; + optional uint32 port = 2; + optional uint64 start_code = 3; +} + +// Comment data structures + +message Coprocessor { + required string name = 1; +} + +message NameStringPair { + required string name = 1; + required string value = 2; +} + +message NameBytesPair { + required string name = 1; + optional bytes value = 2; +} + +message BytesBytesPair { + required bytes first = 1; + required bytes second = 2; +} + +message NameInt64Pair { + optional string name = 1; + optional int64 value = 2; +} + +/** + * Description of the snapshot to take + */ +message SnapshotDescription { + required string name = 1; + optional string table = 2; // not needed for delete, but checked for in taking snapshot + optional int64 creation_time = 3 [default = 0]; + enum Type { + DISABLED = 0; + FLUSH = 1; + SKIPFLUSH = 2; + } + optional Type type = 4 [default = FLUSH]; + optional int32 version = 5; + optional string owner = 6; +} + +/** + * Description of the distributed procedure to take + */ +message ProcedureDescription { + required string signature = 1; // the unique signature of the procedure + optional string instance = 2; // the procedure instance name + optional int64 creation_time = 3 [default = 0]; + repeated NameStringPair configuration = 4; +} + +message EmptyMsg { +} + +enum TimeUnit { + NANOSECONDS = 1; + MICROSECONDS = 2; + MILLISECONDS = 3; + SECONDS = 4; + MINUTES = 5; + HOURS = 6; + DAYS = 7; +} + +message LongMsg { + required int64 long_msg = 1; +} + +message DoubleMsg { + required double double_msg = 1; +} + +message BigDecimalMsg { + required bytes bigdecimal_msg = 1; +} + +message UUID { + required uint64 least_sig_bits = 1; + required uint64 most_sig_bits = 2; +} + +message NamespaceDescriptor { + required bytes name = 1; + repeated NameStringPair configuration = 2; +} + +// Rpc client version info proto. Included in ConnectionHeader on connection setup +message VersionInfo { + required string version = 1; + required string url = 2; + required string revision = 3; + required string user = 4; + required string date = 5; + required string src_checksum = 6; + optional uint32 version_major = 7; + optional uint32 version_minor = 8; +} + +/** + * Description of the region server info + */ +message RegionServerInfo { + optional int32 infoPort = 1; + optional VersionInfo version_info = 2; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/HFile.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/HFile.proto b/hbase-native-client/src/hbase/if/HFile.proto new file mode 100644 index 0000000..5c5e4f3 --- /dev/null +++ b/hbase-native-client/src/hbase/if/HFile.proto @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "HFileProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; + +// Map of name/values +message FileInfoProto { + repeated BytesBytesPair map_entry = 1; +} + +// HFile file trailer +message FileTrailerProto { + optional uint64 file_info_offset = 1; + optional uint64 load_on_open_data_offset = 2; + optional uint64 uncompressed_data_index_size = 3; + optional uint64 total_uncompressed_bytes = 4; + optional uint32 data_index_count = 5; + optional uint32 meta_index_count = 6; + optional uint64 entry_count = 7; + optional uint32 num_data_index_levels = 8; + optional uint64 first_data_block_offset = 9; + optional uint64 last_data_block_offset = 10; + optional string comparator_class_name = 11; + optional uint32 compression_codec = 12; + optional bytes encryption_key = 13; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/LoadBalancer.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/LoadBalancer.proto b/hbase-native-client/src/hbase/if/LoadBalancer.proto new file mode 100644 index 0000000..f9c5d0d --- /dev/null +++ b/hbase-native-client/src/hbase/if/LoadBalancer.proto @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers to represent the state of the load balancer. +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "LoadBalancerProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +message LoadBalancerState { + optional bool balancer_on = 1; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/MapReduce.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/MapReduce.proto b/hbase-native-client/src/hbase/if/MapReduce.proto new file mode 100644 index 0000000..f96ffdf --- /dev/null +++ b/hbase-native-client/src/hbase/if/MapReduce.proto @@ -0,0 +1,37 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //This file includes protocol buffers used in MapReduce only. +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "MapReduceProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; + +message ScanMetrics { + repeated NameInt64Pair metrics = 1; +} + +message TableSnapshotRegionSplit { + repeated string locations = 2; + optional TableSchema table = 3; + optional RegionInfo region = 4; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Master.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Master.proto b/hbase-native-client/src/hbase/if/Master.proto new file mode 100644 index 0000000..ad8111e --- /dev/null +++ b/hbase-native-client/src/hbase/if/Master.proto @@ -0,0 +1,828 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// All to do with the Master. Includes schema management since these +// changes are run by the Master process. +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "MasterProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; +import "Client.proto"; +import "ClusterStatus.proto"; +import "ErrorHandling.proto"; +import "Procedure.proto"; +import "Quota.proto"; + +/* Column-level protobufs */ + +message AddColumnRequest { + required TableName table_name = 1; + required ColumnFamilySchema column_families = 2; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message AddColumnResponse { + optional uint64 proc_id = 1; +} + +message DeleteColumnRequest { + required TableName table_name = 1; + required bytes column_name = 2; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message DeleteColumnResponse { + optional uint64 proc_id = 1; +} + +message ModifyColumnRequest { + required TableName table_name = 1; + required ColumnFamilySchema column_families = 2; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message ModifyColumnResponse { + optional uint64 proc_id = 1; +} + +/* Region-level Protos */ + +message MoveRegionRequest { + required RegionSpecifier region = 1; + optional ServerName dest_server_name = 2; +} + +message MoveRegionResponse { +} + +/** + * Dispatch merging the specified regions. + */ +message DispatchMergingRegionsRequest { + required RegionSpecifier region_a = 1; + required RegionSpecifier region_b = 2; + optional bool forcible = 3 [default = false]; +} + +message DispatchMergingRegionsResponse { +} + +message AssignRegionRequest { + required RegionSpecifier region = 1; +} + +message AssignRegionResponse { +} + +message UnassignRegionRequest { + required RegionSpecifier region = 1; + optional bool force = 2 [default = false]; +} + +message UnassignRegionResponse { +} + +message OfflineRegionRequest { + required RegionSpecifier region = 1; +} + +message OfflineRegionResponse { +} + +/* Table-level protobufs */ + +message CreateTableRequest { + required TableSchema table_schema = 1; + repeated bytes split_keys = 2; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message CreateTableResponse { + optional uint64 proc_id = 1; +} + +message DeleteTableRequest { + required TableName table_name = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message DeleteTableResponse { + optional uint64 proc_id = 1; +} + +message TruncateTableRequest { + required TableName tableName = 1; + optional bool preserveSplits = 2 [default = false]; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message TruncateTableResponse { + optional uint64 proc_id = 1; +} + +message EnableTableRequest { + required TableName table_name = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message EnableTableResponse { + optional uint64 proc_id = 1; +} + +message DisableTableRequest { + required TableName table_name = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message DisableTableResponse { + optional uint64 proc_id = 1; +} + +message ModifyTableRequest { + required TableName table_name = 1; + required TableSchema table_schema = 2; + optional uint64 nonce_group = 3 [default = 0]; + optional uint64 nonce = 4 [default = 0]; +} + +message ModifyTableResponse { + optional uint64 proc_id = 1; +} + +/* Namespace-level protobufs */ + +message CreateNamespaceRequest { + required NamespaceDescriptor namespaceDescriptor = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message CreateNamespaceResponse { + optional uint64 proc_id = 1; +} + +message DeleteNamespaceRequest { + required string namespaceName = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message DeleteNamespaceResponse { + optional uint64 proc_id = 1; +} + +message ModifyNamespaceRequest { + required NamespaceDescriptor namespaceDescriptor = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message ModifyNamespaceResponse { + optional uint64 proc_id = 1; +} + +message GetNamespaceDescriptorRequest { + required string namespaceName = 1; +} + +message GetNamespaceDescriptorResponse { + required NamespaceDescriptor namespaceDescriptor = 1; +} + +message ListNamespaceDescriptorsRequest { +} + +message ListNamespaceDescriptorsResponse { + repeated NamespaceDescriptor namespaceDescriptor = 1; +} + +message ListTableDescriptorsByNamespaceRequest { + required string namespaceName = 1; +} + +message ListTableDescriptorsByNamespaceResponse { + repeated TableSchema tableSchema = 1; +} + +message ListTableNamesByNamespaceRequest { + required string namespaceName = 1; +} + +message ListTableNamesByNamespaceResponse { + repeated TableName tableName = 1; +} + +/* Cluster-level protobufs */ + + +message ShutdownRequest { +} + +message ShutdownResponse { +} + +message StopMasterRequest { +} + +message StopMasterResponse { +} + +message BalanceRequest { + optional bool force = 1; +} + +message BalanceResponse { + required bool balancer_ran = 1; +} + +message SetBalancerRunningRequest { + required bool on = 1; + optional bool synchronous = 2; +} + +message SetBalancerRunningResponse { + optional bool prev_balance_value = 1; +} + +message IsBalancerEnabledRequest { +} + +message IsBalancerEnabledResponse { + required bool enabled = 1; +} + +enum MasterSwitchType { + SPLIT = 0; + MERGE = 1; +} + +message SetSplitOrMergeEnabledRequest { + required bool enabled = 1; + optional bool synchronous = 2; + repeated MasterSwitchType switch_types = 3; + optional bool skip_lock = 4; +} + +message SetSplitOrMergeEnabledResponse { + repeated bool prev_value = 1; +} + +message IsSplitOrMergeEnabledRequest { + required MasterSwitchType switch_type = 1; +} + +message IsSplitOrMergeEnabledResponse { + required bool enabled = 1; +} + +message ReleaseSplitOrMergeLockAndRollbackRequest { +} + +message ReleaseSplitOrMergeLockAndRollbackResponse { +} + +message NormalizeRequest { +} + +message NormalizeResponse { + required bool normalizer_ran = 1; +} + +message SetNormalizerRunningRequest { + required bool on = 1; +} + +message SetNormalizerRunningResponse { + optional bool prev_normalizer_value = 1; +} + +message IsNormalizerEnabledRequest { +} + +message IsNormalizerEnabledResponse { + required bool enabled = 1; +} + +message RunCatalogScanRequest { +} + +message RunCatalogScanResponse { + optional int32 scan_result = 1; +} + +message EnableCatalogJanitorRequest { + required bool enable = 1; +} + +message EnableCatalogJanitorResponse { + optional bool prev_value = 1; +} + +message IsCatalogJanitorEnabledRequest { +} + +message IsCatalogJanitorEnabledResponse { + required bool value = 1; +} + +message SnapshotRequest { + required SnapshotDescription snapshot = 1; +} + +message SnapshotResponse { + required int64 expected_timeout = 1; +} + +message GetCompletedSnapshotsRequest { +} + +message GetCompletedSnapshotsResponse { + repeated SnapshotDescription snapshots = 1; +} + +message DeleteSnapshotRequest { + required SnapshotDescription snapshot = 1; +} + +message DeleteSnapshotResponse { +} + +message RestoreSnapshotRequest { + required SnapshotDescription snapshot = 1; + optional uint64 nonce_group = 2 [default = 0]; + optional uint64 nonce = 3 [default = 0]; +} + +message RestoreSnapshotResponse { + required uint64 proc_id = 1; +} + +/* if you don't send the snapshot, then you will get it back + * in the response (if the snapshot is done) so you can check the snapshot + */ +message IsSnapshotDoneRequest { + optional SnapshotDescription snapshot = 1; +} + +message IsSnapshotDoneResponse { + optional bool done = 1 [default = false]; + optional SnapshotDescription snapshot = 2; +} + +message IsRestoreSnapshotDoneRequest { + optional SnapshotDescription snapshot = 1; +} + +message IsRestoreSnapshotDoneResponse { + optional bool done = 1 [default = false]; +} + +message GetSchemaAlterStatusRequest { + required TableName table_name = 1; +} + +message GetSchemaAlterStatusResponse { + optional uint32 yet_to_update_regions = 1; + optional uint32 total_regions = 2; +} + +message GetTableDescriptorsRequest { + repeated TableName table_names = 1; + optional string regex = 2; + optional bool include_sys_tables = 3 [default=false]; + optional string namespace = 4; +} + +message GetTableDescriptorsResponse { + repeated TableSchema table_schema = 1; +} + +message GetTableNamesRequest { + optional string regex = 1; + optional bool include_sys_tables = 2 [default=false]; + optional string namespace = 3; +} + +message GetTableNamesResponse { + repeated TableName table_names = 1; +} + +message GetTableStateRequest { + required TableName table_name = 1; +} + +message GetTableStateResponse { + required TableState table_state = 1; +} + +message GetClusterStatusRequest { +} + +message GetClusterStatusResponse { + required ClusterStatus cluster_status = 1; +} + +message IsMasterRunningRequest { +} + +message IsMasterRunningResponse { + required bool is_master_running = 1; +} + +message ExecProcedureRequest { + required ProcedureDescription procedure = 1; +} + +message ExecProcedureResponse { + optional int64 expected_timeout = 1; + optional bytes return_data = 2; +} + +message IsProcedureDoneRequest { + optional ProcedureDescription procedure = 1; +} + +message IsProcedureDoneResponse { + optional bool done = 1 [default = false]; + optional ProcedureDescription snapshot = 2; +} + +message GetProcedureResultRequest { + required uint64 proc_id = 1; +} + +message GetProcedureResultResponse { + enum State { + NOT_FOUND = 0; + RUNNING = 1; + FINISHED = 2; + } + + required State state = 1; + optional uint64 start_time = 2; + optional uint64 last_update = 3; + optional bytes result = 4; + optional ForeignExceptionMessage exception = 5; +} + +message AbortProcedureRequest { + required uint64 proc_id = 1; + optional bool mayInterruptIfRunning = 2 [default = true]; +} + +message AbortProcedureResponse { + required bool is_procedure_aborted = 1; +} + +message ListProceduresRequest { +} + +message ListProceduresResponse { + repeated Procedure procedure = 1; +} + +message SetQuotaRequest { + optional string user_name = 1; + optional string user_group = 2; + optional string namespace = 3; + optional TableName table_name = 4; + + optional bool remove_all = 5; + optional bool bypass_globals = 6; + optional ThrottleRequest throttle = 7; +} + +message SetQuotaResponse { +} + +message MajorCompactionTimestampRequest { + required TableName table_name = 1; +} + +message MajorCompactionTimestampForRegionRequest { + required RegionSpecifier region = 1; +} + +message MajorCompactionTimestampResponse { + required int64 compaction_timestamp = 1; +} + +message SecurityCapabilitiesRequest { +} + +message SecurityCapabilitiesResponse { + enum Capability { + SIMPLE_AUTHENTICATION = 0; + SECURE_AUTHENTICATION = 1; + AUTHORIZATION = 2; + CELL_AUTHORIZATION = 3; + CELL_VISIBILITY = 4; + } + + repeated Capability capabilities = 1; +} + +service MasterService { + /** Used by the client to get the number of regions that have received the updated schema */ + rpc GetSchemaAlterStatus(GetSchemaAlterStatusRequest) + returns(GetSchemaAlterStatusResponse); + + /** Get list of TableDescriptors for requested tables. */ + rpc GetTableDescriptors(GetTableDescriptorsRequest) + returns(GetTableDescriptorsResponse); + + /** Get the list of table names. */ + rpc GetTableNames(GetTableNamesRequest) + returns(GetTableNamesResponse); + + /** Return cluster status. */ + rpc GetClusterStatus(GetClusterStatusRequest) + returns(GetClusterStatusResponse); + + /** return true if master is available */ + rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); + + /** Adds a column to the specified table. */ + rpc AddColumn(AddColumnRequest) + returns(AddColumnResponse); + + /** Deletes a column from the specified table. Table must be disabled. */ + rpc DeleteColumn(DeleteColumnRequest) + returns(DeleteColumnResponse); + + /** Modifies an existing column on the specified table. */ + rpc ModifyColumn(ModifyColumnRequest) + returns(ModifyColumnResponse); + + /** Move the region region to the destination server. */ + rpc MoveRegion(MoveRegionRequest) + returns(MoveRegionResponse); + + /** Master dispatch merging the regions */ + rpc DispatchMergingRegions(DispatchMergingRegionsRequest) + returns(DispatchMergingRegionsResponse); + + /** Assign a region to a server chosen at random. */ + rpc AssignRegion(AssignRegionRequest) + returns(AssignRegionResponse); + + /** + * Unassign a region from current hosting regionserver. Region will then be + * assigned to a regionserver chosen at random. Region could be reassigned + * back to the same server. Use MoveRegion if you want + * to control the region movement. + */ + rpc UnassignRegion(UnassignRegionRequest) + returns(UnassignRegionResponse); + + /** + * Offline a region from the assignment manager's in-memory state. The + * region should be in a closed state and there will be no attempt to + * automatically reassign the region as in unassign. This is a special + * method, and should only be used by experts or hbck. + */ + rpc OfflineRegion(OfflineRegionRequest) + returns(OfflineRegionResponse); + + /** Deletes a table */ + rpc DeleteTable(DeleteTableRequest) + returns(DeleteTableResponse); + + /** Truncate a table */ + rpc truncateTable(TruncateTableRequest) + returns(TruncateTableResponse); + + /** Puts the table on-line (only needed if table has been previously taken offline) */ + rpc EnableTable(EnableTableRequest) + returns(EnableTableResponse); + + /** Take table offline */ + rpc DisableTable(DisableTableRequest) + returns(DisableTableResponse); + + /** Modify a table's metadata */ + rpc ModifyTable(ModifyTableRequest) + returns(ModifyTableResponse); + + /** Creates a new table asynchronously */ + rpc CreateTable(CreateTableRequest) + returns(CreateTableResponse); + + /** Shutdown an HBase cluster. */ + rpc Shutdown(ShutdownRequest) + returns(ShutdownResponse); + + /** Stop HBase Master only. Does not shutdown the cluster. */ + rpc StopMaster(StopMasterRequest) + returns(StopMasterResponse); + + /** + * Run the balancer. Will run the balancer and if regions to move, it will + * go ahead and do the reassignments. Can NOT run for various reasons. + * Check logs. + */ + rpc Balance(BalanceRequest) + returns(BalanceResponse); + + /** + * Turn the load balancer on or off. + * If synchronous is true, it waits until current balance() call, if outstanding, to return. + */ + rpc SetBalancerRunning(SetBalancerRunningRequest) + returns(SetBalancerRunningResponse); + + /** + * Query whether the Region Balancer is running. + */ + rpc IsBalancerEnabled(IsBalancerEnabledRequest) + returns(IsBalancerEnabledResponse); + + /** + * Turn the split or merge switch on or off. + * If synchronous is true, it waits until current operation call, if outstanding, to return. + */ + rpc SetSplitOrMergeEnabled(SetSplitOrMergeEnabledRequest) + returns(SetSplitOrMergeEnabledResponse); + + /** + * Query whether the split or merge switch is on/off. + */ + rpc IsSplitOrMergeEnabled(IsSplitOrMergeEnabledRequest) + returns(IsSplitOrMergeEnabledResponse); + + /** + * Release lock and rollback state. + */ + rpc ReleaseSplitOrMergeLockAndRollback(ReleaseSplitOrMergeLockAndRollbackRequest) + returns(ReleaseSplitOrMergeLockAndRollbackResponse); + + /** + * Run region normalizer. Can NOT run for various reasons. Check logs. + */ + rpc Normalize(NormalizeRequest) + returns(NormalizeResponse); + + /** + * Turn region normalizer on or off. + */ + rpc SetNormalizerRunning(SetNormalizerRunningRequest) + returns(SetNormalizerRunningResponse); + + /** + * Query whether region normalizer is enabled. + */ + rpc IsNormalizerEnabled(IsNormalizerEnabledRequest) + returns(IsNormalizerEnabledResponse); + + /** Get a run of the catalog janitor */ + rpc RunCatalogScan(RunCatalogScanRequest) + returns(RunCatalogScanResponse); + + /** + * Enable the catalog janitor on or off. + */ + rpc EnableCatalogJanitor(EnableCatalogJanitorRequest) + returns(EnableCatalogJanitorResponse); + + /** + * Query whether the catalog janitor is enabled. + */ + rpc IsCatalogJanitorEnabled(IsCatalogJanitorEnabledRequest) + returns(IsCatalogJanitorEnabledResponse); + + /** + * Call a master coprocessor endpoint + */ + rpc ExecMasterService(CoprocessorServiceRequest) + returns(CoprocessorServiceResponse); + + /** + * Create a snapshot for the given table. + */ + rpc Snapshot(SnapshotRequest) returns(SnapshotResponse); + + /** + * Get completed snapshots. + * Returns a list of snapshot descriptors for completed snapshots + */ + rpc GetCompletedSnapshots(GetCompletedSnapshotsRequest) returns(GetCompletedSnapshotsResponse); + + /** + * Delete an existing snapshot. This method can also be used to clean up an aborted snapshot. + */ + rpc DeleteSnapshot(DeleteSnapshotRequest) returns(DeleteSnapshotResponse); + + /** + * Determine if the snapshot is done yet. + */ + rpc IsSnapshotDone(IsSnapshotDoneRequest) returns(IsSnapshotDoneResponse); + + /** + * Restore a snapshot + */ + rpc RestoreSnapshot(RestoreSnapshotRequest) returns(RestoreSnapshotResponse); + + /** + * Execute a distributed procedure. + */ + rpc ExecProcedure(ExecProcedureRequest) returns(ExecProcedureResponse); + + /** + * Execute a distributed procedure with return data. + */ + rpc ExecProcedureWithRet(ExecProcedureRequest) returns(ExecProcedureResponse); + + /** + * Determine if the procedure is done yet. + */ + rpc IsProcedureDone(IsProcedureDoneRequest) returns(IsProcedureDoneResponse); + + /** return true if master is available */ + /** rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); */ + + /** Modify a namespace's metadata */ + rpc ModifyNamespace(ModifyNamespaceRequest) + returns(ModifyNamespaceResponse); + + /** Creates a new namespace synchronously */ + rpc CreateNamespace(CreateNamespaceRequest) + returns(CreateNamespaceResponse); + + /** Deletes namespace synchronously */ + rpc DeleteNamespace(DeleteNamespaceRequest) + returns(DeleteNamespaceResponse); + + /** Get a namespace descriptor by name */ + rpc GetNamespaceDescriptor(GetNamespaceDescriptorRequest) + returns(GetNamespaceDescriptorResponse); + + /** returns a list of namespaces */ + rpc ListNamespaceDescriptors(ListNamespaceDescriptorsRequest) + returns(ListNamespaceDescriptorsResponse); + + /** returns a list of tables for a given namespace*/ + rpc ListTableDescriptorsByNamespace(ListTableDescriptorsByNamespaceRequest) + returns(ListTableDescriptorsByNamespaceResponse); + + /** returns a list of tables for a given namespace*/ + rpc ListTableNamesByNamespace(ListTableNamesByNamespaceRequest) + returns(ListTableNamesByNamespaceResponse); + + /** returns table state */ + rpc GetTableState(GetTableStateRequest) + returns(GetTableStateResponse); + + /** Apply the new quota settings */ + rpc SetQuota(SetQuotaRequest) returns(SetQuotaResponse); + + /** Returns the timestamp of the last major compaction */ + rpc getLastMajorCompactionTimestamp(MajorCompactionTimestampRequest) + returns(MajorCompactionTimestampResponse); + + /** Returns the timestamp of the last major compaction */ + rpc getLastMajorCompactionTimestampForRegion(MajorCompactionTimestampForRegionRequest) + returns(MajorCompactionTimestampResponse); + + rpc getProcedureResult(GetProcedureResultRequest) + returns(GetProcedureResultResponse); + + /** Returns the security capabilities in effect on the cluster */ + rpc getSecurityCapabilities(SecurityCapabilitiesRequest) + returns(SecurityCapabilitiesResponse); + + /** Abort a procedure */ + rpc AbortProcedure(AbortProcedureRequest) + returns(AbortProcedureResponse); + + /** returns a list of procedures */ + rpc ListProcedures(ListProceduresRequest) + returns(ListProceduresResponse); +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/MasterProcedure.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/MasterProcedure.proto b/hbase-native-client/src/hbase/if/MasterProcedure.proto new file mode 100644 index 0000000..87aae6a --- /dev/null +++ b/hbase-native-client/src/hbase/if/MasterProcedure.proto @@ -0,0 +1,285 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "MasterProcedureProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; +import "RPC.proto"; + +// ============================================================================ +// WARNING - Compatibility rules +// ============================================================================ +// This .proto contains the data serialized by the master procedures. +// Each procedure has some state stored to know, which step were executed +// and what were the parameters or data created by the previous steps. +// new code should be able to handle the old format or at least fail cleanly +// triggering a rollback/cleanup. +// +// Procedures that are inheriting from a StateMachineProcedure have an enum: +// - Do not change the number of the 'State' enums. +// doing so, will cause executing the wrong 'step' on the pending +// procedures when they will be replayed. +// - Do not remove items from the enum, new code must be able to handle +// all the previous 'steps'. There may be pending procedure ready to be +// recovered replayed. alternative you can make sure that not-known state +// will result in a failure that will rollback the already executed steps. +// ============================================================================ + +enum CreateTableState { + CREATE_TABLE_PRE_OPERATION = 1; + CREATE_TABLE_WRITE_FS_LAYOUT = 2; + CREATE_TABLE_ADD_TO_META = 3; + CREATE_TABLE_ASSIGN_REGIONS = 4; + CREATE_TABLE_UPDATE_DESC_CACHE = 5; + CREATE_TABLE_POST_OPERATION = 6; +} + +message CreateTableStateData { + required UserInformation user_info = 1; + required TableSchema table_schema = 2; + repeated RegionInfo region_info = 3; +} + +enum ModifyTableState { + MODIFY_TABLE_PREPARE = 1; + MODIFY_TABLE_PRE_OPERATION = 2; + MODIFY_TABLE_UPDATE_TABLE_DESCRIPTOR = 3; + MODIFY_TABLE_REMOVE_REPLICA_COLUMN = 4; + MODIFY_TABLE_DELETE_FS_LAYOUT = 5; + MODIFY_TABLE_POST_OPERATION = 6; + MODIFY_TABLE_REOPEN_ALL_REGIONS = 7; +} + +message ModifyTableStateData { + required UserInformation user_info = 1; + optional TableSchema unmodified_table_schema = 2; + required TableSchema modified_table_schema = 3; + required bool delete_column_family_in_modify = 4; +} + +enum TruncateTableState { + TRUNCATE_TABLE_PRE_OPERATION = 1; + TRUNCATE_TABLE_REMOVE_FROM_META = 2; + TRUNCATE_TABLE_CLEAR_FS_LAYOUT = 3; + TRUNCATE_TABLE_CREATE_FS_LAYOUT = 4; + TRUNCATE_TABLE_ADD_TO_META = 5; + TRUNCATE_TABLE_ASSIGN_REGIONS = 6; + TRUNCATE_TABLE_POST_OPERATION = 7; +} + +message TruncateTableStateData { + required UserInformation user_info = 1; + required bool preserve_splits = 2; + optional TableName table_name = 3; + optional TableSchema table_schema = 4; + repeated RegionInfo region_info = 5; +} + +enum DeleteTableState { + DELETE_TABLE_PRE_OPERATION = 1; + DELETE_TABLE_REMOVE_FROM_META = 2; + DELETE_TABLE_CLEAR_FS_LAYOUT = 3; + DELETE_TABLE_UPDATE_DESC_CACHE = 4; + DELETE_TABLE_UNASSIGN_REGIONS = 5; + DELETE_TABLE_POST_OPERATION = 6; +} + +message DeleteTableStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + repeated RegionInfo region_info = 3; +} + +enum CreateNamespaceState { + CREATE_NAMESPACE_PREPARE = 1; + CREATE_NAMESPACE_CREATE_DIRECTORY = 2; + CREATE_NAMESPACE_INSERT_INTO_NS_TABLE = 3; + CREATE_NAMESPACE_UPDATE_ZK = 4; + CREATE_NAMESPACE_SET_NAMESPACE_QUOTA = 5; +} + +message CreateNamespaceStateData { + required NamespaceDescriptor namespace_descriptor = 1; +} + +enum ModifyNamespaceState { + MODIFY_NAMESPACE_PREPARE = 1; + MODIFY_NAMESPACE_UPDATE_NS_TABLE = 2; + MODIFY_NAMESPACE_UPDATE_ZK = 3; +} + +message ModifyNamespaceStateData { + required NamespaceDescriptor namespace_descriptor = 1; + optional NamespaceDescriptor unmodified_namespace_descriptor = 2; +} + +enum DeleteNamespaceState { + DELETE_NAMESPACE_PREPARE = 1; + DELETE_NAMESPACE_DELETE_FROM_NS_TABLE = 2; + DELETE_NAMESPACE_REMOVE_FROM_ZK = 3; + DELETE_NAMESPACE_DELETE_DIRECTORIES = 4; + DELETE_NAMESPACE_REMOVE_NAMESPACE_QUOTA = 5; +} + +message DeleteNamespaceStateData { + required string namespace_name = 1; + optional NamespaceDescriptor namespace_descriptor = 2; +} + +enum AddColumnFamilyState { + ADD_COLUMN_FAMILY_PREPARE = 1; + ADD_COLUMN_FAMILY_PRE_OPERATION = 2; + ADD_COLUMN_FAMILY_UPDATE_TABLE_DESCRIPTOR = 3; + ADD_COLUMN_FAMILY_POST_OPERATION = 4; + ADD_COLUMN_FAMILY_REOPEN_ALL_REGIONS = 5; +} + +message AddColumnFamilyStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + required ColumnFamilySchema columnfamily_schema = 3; + optional TableSchema unmodified_table_schema = 4; +} + +enum ModifyColumnFamilyState { + MODIFY_COLUMN_FAMILY_PREPARE = 1; + MODIFY_COLUMN_FAMILY_PRE_OPERATION = 2; + MODIFY_COLUMN_FAMILY_UPDATE_TABLE_DESCRIPTOR = 3; + MODIFY_COLUMN_FAMILY_POST_OPERATION = 4; + MODIFY_COLUMN_FAMILY_REOPEN_ALL_REGIONS = 5; +} + +message ModifyColumnFamilyStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + required ColumnFamilySchema columnfamily_schema = 3; + optional TableSchema unmodified_table_schema = 4; +} + +enum DeleteColumnFamilyState { + DELETE_COLUMN_FAMILY_PREPARE = 1; + DELETE_COLUMN_FAMILY_PRE_OPERATION = 2; + DELETE_COLUMN_FAMILY_UPDATE_TABLE_DESCRIPTOR = 3; + DELETE_COLUMN_FAMILY_DELETE_FS_LAYOUT = 4; + DELETE_COLUMN_FAMILY_POST_OPERATION = 5; + DELETE_COLUMN_FAMILY_REOPEN_ALL_REGIONS = 6; +} + +message DeleteColumnFamilyStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + required bytes columnfamily_name = 3; + optional TableSchema unmodified_table_schema = 4; +} + +enum EnableTableState { + ENABLE_TABLE_PREPARE = 1; + ENABLE_TABLE_PRE_OPERATION = 2; + ENABLE_TABLE_SET_ENABLING_TABLE_STATE = 3; + ENABLE_TABLE_MARK_REGIONS_ONLINE = 4; + ENABLE_TABLE_SET_ENABLED_TABLE_STATE = 5; + ENABLE_TABLE_POST_OPERATION = 6; +} + +message EnableTableStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + required bool skip_table_state_check = 3; +} + +enum DisableTableState { + DISABLE_TABLE_PREPARE = 1; + DISABLE_TABLE_PRE_OPERATION = 2; + DISABLE_TABLE_SET_DISABLING_TABLE_STATE = 3; + DISABLE_TABLE_MARK_REGIONS_OFFLINE = 4; + DISABLE_TABLE_SET_DISABLED_TABLE_STATE = 5; + DISABLE_TABLE_POST_OPERATION = 6; +} + +message DisableTableStateData { + required UserInformation user_info = 1; + required TableName table_name = 2; + required bool skip_table_state_check = 3; +} + +message RestoreParentToChildRegionsPair { + required string parent_region_name = 1; + required string child1_region_name = 2; + required string child2_region_name = 3; +} + +enum CloneSnapshotState { + CLONE_SNAPSHOT_PRE_OPERATION = 1; + CLONE_SNAPSHOT_WRITE_FS_LAYOUT = 2; + CLONE_SNAPSHOT_ADD_TO_META = 3; + CLONE_SNAPSHOT_ASSIGN_REGIONS = 4; + CLONE_SNAPSHOT_UPDATE_DESC_CACHE = 5; + CLONE_SNAPSHOT_POST_OPERATION = 6; +} + +message CloneSnapshotStateData { + required UserInformation user_info = 1; + required SnapshotDescription snapshot = 2; + required TableSchema table_schema = 3; + repeated RegionInfo region_info = 4; + repeated RestoreParentToChildRegionsPair parent_to_child_regions_pair_list = 5; +} + +enum RestoreSnapshotState { + RESTORE_SNAPSHOT_PRE_OPERATION = 1; + RESTORE_SNAPSHOT_UPDATE_TABLE_DESCRIPTOR = 2; + RESTORE_SNAPSHOT_WRITE_FS_LAYOUT = 3; + RESTORE_SNAPSHOT_UPDATE_META = 4; +} + +message RestoreSnapshotStateData { + required UserInformation user_info = 1; + required SnapshotDescription snapshot = 2; + required TableSchema modified_table_schema = 3; + repeated RegionInfo region_info_for_restore = 4; + repeated RegionInfo region_info_for_remove = 5; + repeated RegionInfo region_info_for_add = 6; + repeated RestoreParentToChildRegionsPair parent_to_child_regions_pair_list = 7; +} + +message ServerCrashStateData { + required ServerName server_name = 1; + optional bool distributed_log_replay = 2; + repeated RegionInfo regions_on_crashed_server = 3; + repeated RegionInfo regions_assigned = 4; + optional bool carrying_meta = 5; + optional bool should_split_wal = 6 [default = true]; +} + +enum ServerCrashState { + SERVER_CRASH_START = 1; + SERVER_CRASH_PROCESS_META = 2; + SERVER_CRASH_GET_REGIONS = 3; + SERVER_CRASH_NO_SPLIT_LOGS = 4; + SERVER_CRASH_SPLIT_LOGS = 5; + SERVER_CRASH_PREPARE_LOG_REPLAY = 6; + // Removed SERVER_CRASH_CALC_REGIONS_TO_ASSIGN = 7; + SERVER_CRASH_ASSIGN = 8; + SERVER_CRASH_WAIT_ON_ASSIGN = 9; + SERVER_CRASH_FINISH = 100; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/MultiRowMutation.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/MultiRowMutation.proto b/hbase-native-client/src/hbase/if/MultiRowMutation.proto new file mode 100644 index 0000000..747afac --- /dev/null +++ b/hbase-native-client/src/hbase/if/MultiRowMutation.proto @@ -0,0 +1,45 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hbase.pb; + +import "Client.proto"; +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "MultiRowMutationProtos"; +option java_generate_equals_and_hash = true; +option java_generic_services = true; +option optimize_for = SPEED; + +message MultiRowMutationProcessorRequest{ +} + +message MultiRowMutationProcessorResponse{ +} + +message MutateRowsRequest { + repeated MutationProto mutation_request = 1; + optional uint64 nonce_group = 2; + optional uint64 nonce = 3; +} + +message MutateRowsResponse { +} + +service MultiRowMutationService { + rpc MutateRows(MutateRowsRequest) + returns(MutateRowsResponse); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Procedure.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Procedure.proto b/hbase-native-client/src/hbase/if/Procedure.proto new file mode 100644 index 0000000..55e44a4 --- /dev/null +++ b/hbase-native-client/src/hbase/if/Procedure.proto @@ -0,0 +1,119 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "ProcedureProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "ErrorHandling.proto"; + +enum ProcedureState { + INITIALIZING = 1; // Procedure in construction, not yet added to the executor + RUNNABLE = 2; // Procedure added to the executor, and ready to be executed + WAITING = 3; // The procedure is waiting on children to be completed + WAITING_TIMEOUT = 4; // The procedure is waiting a timout or an external event + ROLLEDBACK = 5; // The procedure failed and was rolledback + FINISHED = 6; // The procedure execution is completed. may need a rollback if failed. +} + +/** + * Procedure metadata, serialized by the ProcedureStore to be able to recover the old state. + */ +message Procedure { + // internal "static" state + required string class_name = 1; // full classname to be able to instantiate the procedure + optional uint64 parent_id = 2; // parent if not a root-procedure otherwise not set + required uint64 proc_id = 3; + required uint64 start_time = 4; + optional string owner = 5; + + // internal "runtime" state + required ProcedureState state = 6; + repeated uint32 stack_id = 7; // stack indices in case the procedure was running + required uint64 last_update = 8; + optional uint32 timeout = 9; + + // user state/results + optional ForeignExceptionMessage exception = 10; + optional bytes result = 11; // opaque (user) result structure + optional bytes state_data = 12; // opaque (user) procedure internal-state + + // Nonce to prevent same procedure submit by multiple times + optional uint64 nonce_group = 13 [default = 0]; + optional uint64 nonce = 14 [default = 0]; +} + +/** + * SequentialProcedure data + */ +message SequentialProcedureData { + required bool executed = 1; +} + +/** + * StateMachineProcedure data + */ +message StateMachineProcedureData { + repeated uint32 state = 1; +} + +/** + * Procedure WAL header + */ +message ProcedureWALHeader { + required uint32 version = 1; + required uint32 type = 2; + required uint64 log_id = 3; + required uint64 min_proc_id = 4; +} + +/** + * Procedure WAL trailer + */ +message ProcedureWALTrailer { + required uint32 version = 1; + required uint64 tracker_pos = 2; +} + +message ProcedureStoreTracker { + message TrackerNode { + required uint64 start_id = 1; + repeated uint64 updated = 2; + repeated uint64 deleted = 3; + } + + repeated TrackerNode node = 1; +} + +message ProcedureWALEntry { + enum Type { + PROCEDURE_WAL_EOF = 1; + PROCEDURE_WAL_INIT = 2; + PROCEDURE_WAL_INSERT = 3; + PROCEDURE_WAL_UPDATE = 4; + PROCEDURE_WAL_DELETE = 5; + PROCEDURE_WAL_COMPACT = 6; + } + + required Type type = 1; + repeated Procedure procedure = 2; + optional uint64 proc_id = 3; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/Quota.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/Quota.proto b/hbase-native-client/src/hbase/if/Quota.proto new file mode 100644 index 0000000..a8303b1 --- /dev/null +++ b/hbase-native-client/src/hbase/if/Quota.proto @@ -0,0 +1,76 @@ + /** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "QuotaProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; + +enum QuotaScope { + CLUSTER = 1; + MACHINE = 2; +} + +message TimedQuota { + required TimeUnit time_unit = 1; + optional uint64 soft_limit = 2; + optional float share = 3; + optional QuotaScope scope = 4 [default = MACHINE]; +} + +enum ThrottleType { + REQUEST_NUMBER = 1; + REQUEST_SIZE = 2; + WRITE_NUMBER = 3; + WRITE_SIZE = 4; + READ_NUMBER = 5; + READ_SIZE = 6; +} + +message Throttle { + optional TimedQuota req_num = 1; + optional TimedQuota req_size = 2; + + optional TimedQuota write_num = 3; + optional TimedQuota write_size = 4; + + optional TimedQuota read_num = 5; + optional TimedQuota read_size = 6; +} + +message ThrottleRequest { + optional ThrottleType type = 1; + optional TimedQuota timed_quota = 2; +} + +enum QuotaType { + THROTTLE = 1; +} + +message Quotas { + optional bool bypass_globals = 1 [default = false]; + optional Throttle throttle = 2; +} + +message QuotaUsage { +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RPC.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RPC.proto b/hbase-native-client/src/hbase/if/RPC.proto new file mode 100644 index 0000000..8413d25 --- /dev/null +++ b/hbase-native-client/src/hbase/if/RPC.proto @@ -0,0 +1,137 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hbase.pb; + +import "Tracing.proto"; +import "HBase.proto"; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RPCProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +// See https://issues.apache.org/jira/browse/HBASE-7898 for high-level +// description of RPC specification. +// +// On connection setup, the client sends six bytes of preamble -- a four +// byte magic, a byte of version, and a byte of authentication type. +// +// We then send a "ConnectionHeader" protobuf of user information and the +// 'protocol' or 'service' that is to be run over this connection as well as +// info such as codecs and compression to use when we send cell blocks(see below). +// This connection header protobuf is prefaced by an int that holds the length +// of this connection header (this is NOT a varint). The pb connection header +// is sent with Message#writeTo. The server throws an exception if it doesn't +// like what it was sent noting what it is objecting too. Otherwise, the server +// says nothing and is open for business. +// +// Hereafter the client makes requests and the server returns responses. +// +// Requests look like this: +// +// <An int with the total length of the request> +// <RequestHeader Message written out using Message#writeDelimitedTo> +// <Optionally a Request Parameter Message written out using Message#writeDelimitedTo> +// <Optionally a Cell block> +// +// ...where the Request Parameter Message is whatever the method name stipulated +// in the RequestHeader expects; e.g. if the method is a scan, then the pb +// Request Message is a GetRequest, or a ScanRequest. A block of Cells +// optionally follows. The presence of a Request param Message and/or a +// block of Cells will be noted in the RequestHeader. +// +// Response is the mirror of the request: +// +// <An int with the total length of the response> +// <ResponseHeader Message written out using Message#writeDelimitedTo> +// <Optionally a Response Result Message written out using Message#writeDelimitedTo> +// <Optionally a Cell block> +// +// ...where the Response Message is the response type that goes with the +// method specified when making the request and the follow on Cell blocks may +// or may not be there -- read the response header to find out if one following. +// If an exception, it will be included inside the Response Header. +// +// Any time we write a pb, we do it with Message#writeDelimitedTo EXCEPT when +// the connection header is sent; this is prefaced by an int with its length +// and the pb connection header is then written with Message#writeTo. +// + +// User Information proto. Included in ConnectionHeader on connection setup +message UserInformation { + required string effective_user = 1; + optional string real_user = 2; +} + +// This is sent on connection setup after the connection preamble is sent. +message ConnectionHeader { + optional UserInformation user_info = 1; + optional string service_name = 2; + // Cell block codec we will use sending over optional cell blocks. Server throws exception + // if cannot deal. Null means no codec'ing going on so we are pb all the time (SLOW!!!) + optional string cell_block_codec_class = 3; + // Compressor we will use if cell block is compressed. Server will throw exception if not supported. + // Class must implement hadoop's CompressionCodec Interface. Can't compress if no codec. + optional string cell_block_compressor_class = 4; + optional VersionInfo version_info = 5; +} + +// Optional Cell block Message. Included in client RequestHeader +message CellBlockMeta { + // Length of the following cell block. Could calculate it but convenient having it too hand. + optional uint32 length = 1; +} + +// At the RPC layer, this message is used to carry +// the server side exception to the RPC client. +message ExceptionResponse { + // Class name of the exception thrown from the server + optional string exception_class_name = 1; + // Exception stack trace from the server side + optional string stack_trace = 2; + // Optional hostname. Filled in for some exceptions such as region moved + // where exception gives clue on where the region may have moved. + optional string hostname = 3; + optional int32 port = 4; + // Set if we are NOT to retry on receipt of this exception + optional bool do_not_retry = 5; +} + +// Header sent making a request. +message RequestHeader { + // Monotonically increasing call_id to keep track of RPC requests and their response + optional uint32 call_id = 1; + optional RPCTInfo trace_info = 2; + optional string method_name = 3; + // If true, then a pb Message param follows. + optional bool request_param = 4; + // If present, then an encoded data block follows. + optional CellBlockMeta cell_block_meta = 5; + // 0 is NORMAL priority. 200 is HIGH. If no priority, treat it as NORMAL. + // See HConstants. + optional uint32 priority = 6; + optional uint32 timeout = 7; +} + +message ResponseHeader { + optional uint32 call_id = 1; + // If present, then request threw an exception and no response message (else we presume one) + optional ExceptionResponse exception = 2; + // If present, then an encoded data block follows. + optional CellBlockMeta cell_block_meta = 3; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RSGroup.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RSGroup.proto b/hbase-native-client/src/hbase/if/RSGroup.proto new file mode 100644 index 0000000..7358941 --- /dev/null +++ b/hbase-native-client/src/hbase/if/RSGroup.proto @@ -0,0 +1,34 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RSGroupProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; + +message RSGroupInfo { + required string name = 1; + repeated ServerName servers = 4; + repeated TableName tables = 3; +} + http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RSGroupAdmin.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RSGroupAdmin.proto b/hbase-native-client/src/hbase/if/RSGroupAdmin.proto new file mode 100644 index 0000000..fda9b09 --- /dev/null +++ b/hbase-native-client/src/hbase/if/RSGroupAdmin.proto @@ -0,0 +1,136 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RSGroupAdminProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; +import "RSGroup.proto"; + +/** Group level protobufs */ + +message ListTablesOfRSGroupRequest { + required string r_s_group_name = 1; +} + +message ListTablesOfRSGroupResponse { + repeated TableName table_name = 1; +} + +message GetRSGroupInfoRequest { + required string r_s_group_name = 1; +} + +message GetRSGroupInfoResponse { + optional RSGroupInfo r_s_group_info = 1; +} + +message GetRSGroupInfoOfTableRequest { + required TableName table_name = 1; +} + +message GetRSGroupInfoOfTableResponse { + optional RSGroupInfo r_s_group_info = 1; +} + +message MoveServersRequest { + required string target_group = 1; + repeated ServerName servers = 3; +} + +message MoveServersResponse { +} + +message MoveTablesRequest { + required string target_group = 1; + repeated TableName table_name = 2; +} + +message MoveTablesResponse { +} + +message AddRSGroupRequest { + required string r_s_group_name = 1; +} + +message AddRSGroupResponse { +} + +message RemoveRSGroupRequest { + required string r_s_group_name = 1; +} + +message RemoveRSGroupResponse { +} + +message BalanceRSGroupRequest { + required string r_s_group_name = 1; +} + +message BalanceRSGroupResponse { + required bool balanceRan = 1; +} + +message ListRSGroupInfosRequest { +} + +message ListRSGroupInfosResponse { + repeated RSGroupInfo r_s_group_info = 1; +} + +message GetRSGroupInfoOfServerRequest { + required ServerName server = 2; +} + +message GetRSGroupInfoOfServerResponse { + optional RSGroupInfo r_s_group_info = 1; +} + +service RSGroupAdminService { + rpc GetRSGroupInfo(GetRSGroupInfoRequest) + returns (GetRSGroupInfoResponse); + + rpc GetRSGroupInfoOfTable(GetRSGroupInfoOfTableRequest) + returns (GetRSGroupInfoOfTableResponse); + + rpc GetRSGroupInfoOfServer(GetRSGroupInfoOfServerRequest) + returns (GetRSGroupInfoOfServerResponse); + + rpc MoveServers(MoveServersRequest) + returns (MoveServersResponse); + + rpc MoveTables(MoveTablesRequest) + returns (MoveTablesResponse); + + rpc AddRSGroup(AddRSGroupRequest) + returns (AddRSGroupResponse); + + rpc RemoveRSGroup(RemoveRSGroupRequest) + returns (RemoveRSGroupResponse); + + rpc BalanceRSGroup(BalanceRSGroupRequest) + returns (BalanceRSGroupResponse); + + rpc ListRSGroupInfos(ListRSGroupInfosRequest) + returns (ListRSGroupInfosResponse); +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RegionNormalizer.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RegionNormalizer.proto b/hbase-native-client/src/hbase/if/RegionNormalizer.proto new file mode 100644 index 0000000..e5305d6 --- /dev/null +++ b/hbase-native-client/src/hbase/if/RegionNormalizer.proto @@ -0,0 +1,28 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers to represent the state of the load balancer. + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RegionNormalizerProtos"; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +message RegionNormalizerState { + optional bool normalizer_on = 1; +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RegionServerStatus.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RegionServerStatus.proto b/hbase-native-client/src/hbase/if/RegionServerStatus.proto new file mode 100644 index 0000000..fda9de2 --- /dev/null +++ b/hbase-native-client/src/hbase/if/RegionServerStatus.proto @@ -0,0 +1,158 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file contains protocol buffers that are used for RegionServerStatusProtocol. +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RegionServerStatusProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +import "HBase.proto"; +import "ClusterStatus.proto"; + +message RegionServerStartupRequest { + /** Port number this regionserver is up on */ + required uint32 port = 1; + + /** This servers' startcode */ + required uint64 server_start_code = 2; + + /** Current time of the region server in ms */ + required uint64 server_current_time = 3; + + /** hostname for region server, optional */ + optional string use_this_hostname_instead = 4; +} + +message RegionServerStartupResponse { + /** + * Configuration for the regionserver to use: e.g. filesystem, + * hbase rootdir, the hostname to use creating the RegionServer ServerName, + * etc + */ + repeated NameStringPair map_entries = 1; +} + +message RegionServerReportRequest { + required ServerName server = 1; + + /** load the server is under */ + optional ServerLoad load = 2; +} + +message RegionServerReportResponse { +} + +message ReportRSFatalErrorRequest { + /** name of the server experiencing the error */ + required ServerName server = 1; + + /** informative text to expose in the master logs and UI */ + required string error_message = 2; +} + +message ReportRSFatalErrorResponse { +} + +message GetLastFlushedSequenceIdRequest { + /** region name */ + required bytes region_name = 1; +} + +message GetLastFlushedSequenceIdResponse { + /** the last WAL sequence id flushed from MemStore to HFile for the region */ + required uint64 last_flushed_sequence_id = 1; + + /** the last WAL sequence id flushed from MemStore to HFile for stores of the region */ + repeated StoreSequenceId store_last_flushed_sequence_id = 2; +} + +message RegionStateTransition { + required TransitionCode transition_code = 1; + + /** Mutliple regions are involved during merging/splitting */ + repeated RegionInfo region_info = 2; + + /** For newly opened region, the open seq num is needed */ + optional uint64 open_seq_num = 3; + + enum TransitionCode { + OPENED = 0; + FAILED_OPEN = 1; + /** No failed_close, in which case region server will abort */ + CLOSED = 2; + + /** Ask master for ok to split/merge region(s) */ + READY_TO_SPLIT = 3; + READY_TO_MERGE = 4; + + SPLIT_PONR = 5; + MERGE_PONR = 6; + + SPLIT = 7; + MERGED = 8; + SPLIT_REVERTED = 9; + MERGE_REVERTED = 10; + } +} + +message ReportRegionStateTransitionRequest { + /** This region server's server name */ + required ServerName server = 1; + + repeated RegionStateTransition transition = 2; +} + +message ReportRegionStateTransitionResponse { + /** Error message if failed to update the region state */ + optional string error_message = 1; +} + +service RegionServerStatusService { + /** Called when a region server first starts. */ + rpc RegionServerStartup(RegionServerStartupRequest) + returns(RegionServerStartupResponse); + + /** Called to report the load the RegionServer is under. */ + rpc RegionServerReport(RegionServerReportRequest) + returns(RegionServerReportResponse); + + /** + * Called by a region server to report a fatal error that is causing it to + * abort. + */ + rpc ReportRSFatalError(ReportRSFatalErrorRequest) + returns(ReportRSFatalErrorResponse); + + /** Called to get the sequence id of the last MemStore entry flushed to an + * HFile for a specified region. Used by the region server to speed up + * log splitting. */ + rpc GetLastFlushedSequenceId(GetLastFlushedSequenceIdRequest) + returns(GetLastFlushedSequenceIdResponse); + + /** + * Called by a region server to report the progress of a region + * transition. If the request fails, the transition should + * be aborted. + */ + rpc ReportRegionStateTransition(ReportRegionStateTransitionRequest) + returns(ReportRegionStateTransitionResponse); +} http://git-wip-us.apache.org/repos/asf/hbase/blob/128fc306/hbase-native-client/src/hbase/if/RowProcessor.proto ---------------------------------------------------------------------- diff --git a/hbase-native-client/src/hbase/if/RowProcessor.proto b/hbase-native-client/src/hbase/if/RowProcessor.proto new file mode 100644 index 0000000..cf2f30f --- /dev/null +++ b/hbase-native-client/src/hbase/if/RowProcessor.proto @@ -0,0 +1,45 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Defines a protocol to perform multi row transactions. + * See BaseRowProcessorEndpoint for the implementation. + * See HRegion#processRowsWithLocks() for details. + */ +package hbase.pb; + +option java_package = "org.apache.hadoop.hbase.protobuf.generated"; +option java_outer_classname = "RowProcessorProtos"; +option java_generic_services = true; +option java_generate_equals_and_hash = true; +option optimize_for = SPEED; + +message ProcessRequest { + required string row_processor_class_name = 1; + optional string row_processor_initializer_message_name = 2; + optional bytes row_processor_initializer_message = 3; + optional uint64 nonce_group = 4; + optional uint64 nonce = 5; +} + +message ProcessResponse { + required bytes row_processor_result = 1; +} + +service RowProcessorService { + rpc Process(ProcessRequest) returns (ProcessResponse); +}