You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2022/01/16 08:45:29 UTC
[hbase] branch branch-2 updated (933fcdb -> f1dd865)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a change to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git.
from 933fcdb Backport HBASE-26551 Add FastPath feature to HBase RWQueueRpcExecutor to branch-2 (#4027)
new cf4a826 HBASE-26671 Misspellings of hbck usage (#4033)
new f1dd865 HBASE-26654 ModifyTableDescriptorProcedure shoud load TableDescriptor while executing (#4034)
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../src/main/protobuf/MasterProcedure.proto | 2 +-
.../hbase/master/migrate/RollingUpgradeChore.java | 2 +-
.../procedure/ModifyTableDescriptorProcedure.java | 30 +++++++++++++++++-----
.../InitializeStoreFileTrackerProcedure.java | 5 ++--
.../org/apache/hadoop/hbase/util/HBaseFsck.java | 2 +-
5 files changed, 29 insertions(+), 12 deletions(-)
[hbase] 02/02: HBASE-26654 ModifyTableDescriptorProcedure shoud load TableDescriptor while executing (#4034)
Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
commit f1dd865c355b61d74787e51df1a221929cc49875
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Sun Jan 16 16:25:28 2022 +0800
HBASE-26654 ModifyTableDescriptorProcedure shoud load TableDescriptor while executing (#4034)
Signed-off-by: GeorryHuang <hu...@apache.org>
---
.../src/main/protobuf/MasterProcedure.proto | 2 +-
.../hbase/master/migrate/RollingUpgradeChore.java | 2 +-
.../procedure/ModifyTableDescriptorProcedure.java | 30 +++++++++++++++++-----
.../InitializeStoreFileTrackerProcedure.java | 5 ++--
4 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto
index cdc6e73..fdcb181 100644
--- a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto
+++ b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto
@@ -593,6 +593,6 @@ enum ModifyTableDescriptorState {
}
message ModifyTableDescriptorStateData {
- required TableSchema unmodified_table_schema = 1;
+ required TableName table_name = 1;
optional TableSchema modified_table_schema = 2;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/migrate/RollingUpgradeChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/migrate/RollingUpgradeChore.java
index 0417b5c..b7087dd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/migrate/RollingUpgradeChore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/migrate/RollingUpgradeChore.java
@@ -121,7 +121,7 @@ public class RollingUpgradeChore extends ScheduledChore {
for (Map.Entry<String, TableDescriptor> entry : migrateSFTTables.entrySet()) {
TableDescriptor tableDescriptor = entry.getValue();
InitializeStoreFileTrackerProcedure proc = new InitializeStoreFileTrackerProcedure(
- procedureExecutor.getEnvironment(), tableDescriptor);
+ procedureExecutor.getEnvironment(), tableDescriptor.getTableName());
procedureExecutor.submitProcedure(proc);
processingProcs.add(proc);
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableDescriptorProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableDescriptorProcedure.java
index 4f49142..0cb83ce 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableDescriptorProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableDescriptorProcedure.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.master.procedure;
import java.io.IOException;
+import java.util.Objects;
import java.util.Optional;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.TableDescriptor;
@@ -44,20 +45,21 @@ public abstract class ModifyTableDescriptorProcedure
private static final Logger LOG = LoggerFactory.getLogger(ModifyTableDescriptorProcedure.class);
- private TableDescriptor unmodifiedTableDescriptor;
+ private TableName tableName;
+
private TableDescriptor modifiedTableDescriptor;
protected ModifyTableDescriptorProcedure() {
}
- protected ModifyTableDescriptorProcedure(MasterProcedureEnv env, TableDescriptor unmodified) {
+ protected ModifyTableDescriptorProcedure(MasterProcedureEnv env, TableName tableName) {
super(env);
- this.unmodifiedTableDescriptor = unmodified;
+ this.tableName = Objects.requireNonNull(tableName);
}
@Override
public TableName getTableName() {
- return unmodifiedTableDescriptor.getTableName();
+ return tableName;
}
@Override
@@ -82,7 +84,12 @@ public abstract class ModifyTableDescriptorProcedure
try {
switch (state) {
case MODIFY_TABLE_DESCRIPTOR_PREPARE:
- Optional<TableDescriptor> modified = modify(env, unmodifiedTableDescriptor);
+ TableDescriptor current = env.getMasterServices().getTableDescriptors().get(tableName);
+ if (current == null) {
+ LOG.info("Table {} does not exist, skip modifying", tableName);
+ return Flow.NO_MORE_STATE;
+ }
+ Optional<TableDescriptor> modified = modify(env, current);
if (modified.isPresent()) {
modifiedTableDescriptor = modified.get();
setNextState(ModifyTableDescriptorState.MODIFY_TABLE_DESCRIPTOR_UPDATE);
@@ -109,6 +116,15 @@ public abstract class ModifyTableDescriptorProcedure
}
@Override
+ protected boolean holdLock(MasterProcedureEnv env) {
+ // here we want to make sure that our modification result will not be overwrite by other MTPs,
+ // so we set holdLock to true. Since we do not need to schedule any sub procedures, especially
+ // no remote procedures, so it is OK for us a hold the lock all the time, it will not hurt the
+ // availability too much.
+ return true;
+ }
+
+ @Override
protected void rollbackState(MasterProcedureEnv env, ModifyTableDescriptorState state)
throws IOException, InterruptedException {
if (state == ModifyTableDescriptorState.MODIFY_TABLE_DESCRIPTOR_PREPARE) {
@@ -141,7 +157,7 @@ public abstract class ModifyTableDescriptorProcedure
protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {
super.serializeStateData(serializer);
ModifyTableDescriptorStateData.Builder builder = ModifyTableDescriptorStateData.newBuilder()
- .setUnmodifiedTableSchema(ProtobufUtil.toTableSchema(unmodifiedTableDescriptor));
+ .setTableName(ProtobufUtil.toProtoTableName(tableName));
if (modifiedTableDescriptor != null) {
builder.setModifiedTableSchema(ProtobufUtil.toTableSchema(modifiedTableDescriptor));
}
@@ -153,7 +169,7 @@ public abstract class ModifyTableDescriptorProcedure
super.deserializeStateData(serializer);
ModifyTableDescriptorStateData data =
serializer.deserialize(ModifyTableDescriptorStateData.class);
- unmodifiedTableDescriptor = ProtobufUtil.toTableDescriptor(data.getUnmodifiedTableSchema());
+ tableName = ProtobufUtil.toTableName(data.getTableName());
if (data.hasModifiedTableSchema()) {
modifiedTableDescriptor = ProtobufUtil.toTableDescriptor(data.getModifiedTableSchema());
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/InitializeStoreFileTrackerProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/InitializeStoreFileTrackerProcedure.java
index bd4162c..5a88f99 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/InitializeStoreFileTrackerProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/InitializeStoreFileTrackerProcedure.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.regionserver.storefiletracker;
import java.util.Optional;
+import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
@@ -33,8 +34,8 @@ public class InitializeStoreFileTrackerProcedure extends ModifyTableDescriptorPr
public InitializeStoreFileTrackerProcedure(){}
- public InitializeStoreFileTrackerProcedure(MasterProcedureEnv env, TableDescriptor unmodified) {
- super(env, unmodified);
+ public InitializeStoreFileTrackerProcedure(MasterProcedureEnv env, TableName tableName) {
+ super(env, tableName);
}
@Override
[hbase] 01/02: HBASE-26671 Misspellings of hbck usage (#4033)
Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
commit cf4a8266eb1836613716fde7f8f214e01a195671
Author: xianjingfeng <58...@qq.com>
AuthorDate: Sun Jan 16 16:23:23 2022 +0800
HBASE-26671 Misspellings of hbck usage (#4033)
Signed-off-by: Duo Zhang <zh...@apache.org>
---
hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index 8460998..4fcdd37 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -3588,7 +3588,7 @@ public class HBaseFsck extends Configured implements Closeable {
out.println("");
out.println(" Replication options");
out.println(" -fixReplication Deletes replication queues for removed peers");
- out.println(" -cleanReplicationBrarier [tableName] clean the replication barriers " +
+ out.println(" -cleanReplicationBarrier [tableName] clean the replication barriers " +
"of a specified table, tableName is required");
out.flush();
errors.reportError(ERROR_CODE.WRONG_USAGE, sw.toString());