HBASE-18528 DON'T allow user to modify the passed table/column descriptor

This commit is contained in:
Chia-Ping Tsai 2017-08-14 14:02:30 +08:00
parent c6bf4d5192
commit e2b797be39
4 changed files with 79 additions and 65 deletions

View File

@ -35,8 +35,9 @@ public class ImmutableHColumnDescriptor extends HColumnDescriptor {
super(desc, false);
}
ImmutableHColumnDescriptor(final ModifyableColumnFamilyDescriptor desc) {
super(desc);
public ImmutableHColumnDescriptor(final ColumnFamilyDescriptor desc) {
super(desc instanceof ModifyableColumnFamilyDescriptor ?
(ModifyableColumnFamilyDescriptor) desc : new ModifyableColumnFamilyDescriptor(desc));
}
@Override

View File

@ -28,19 +28,17 @@ import org.apache.hadoop.hbase.HTableDescriptor;
* Read-only table descriptor.
*/
@Deprecated // deprecated for hbase 2.0, remove for hbase 3.0. see HTableDescriptor.
@InterfaceAudience.Public
@InterfaceAudience.Private
public class ImmutableHTableDescriptor extends HTableDescriptor {
@Override
protected HColumnDescriptor toHColumnDescriptor(ColumnFamilyDescriptor desc) {
if (desc == null) {
return null;
} else if (desc instanceof ModifyableColumnFamilyDescriptor) {
return new ImmutableHColumnDescriptor((ModifyableColumnFamilyDescriptor) desc);
} else if (desc instanceof HColumnDescriptor) {
return new ImmutableHColumnDescriptor((HColumnDescriptor) desc);
} else {
return new ImmutableHColumnDescriptor(new ModifyableColumnFamilyDescriptor(desc));
return new ImmutableHColumnDescriptor(desc);
}
}
/*
@ -51,6 +49,11 @@ public class ImmutableHTableDescriptor extends HTableDescriptor {
super(desc, false);
}
public ImmutableHTableDescriptor(final TableDescriptor desc) {
super(desc instanceof ModifyableTableDescriptor ?
(ModifyableTableDescriptor) desc : new ModifyableTableDescriptor(desc.getTableName(), desc));
}
@Override
protected ModifyableTableDescriptor getDelegateeForModification() {
throw new UnsupportedOperationException("HTableDescriptor is read-only");

View File

@ -107,7 +107,7 @@ public interface MasterObserver extends Coprocessor {
* table handler and it is async to the create RPC call.
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param desc the HTableDescriptor for the table
* @param desc the read-only HTableDescriptor for the table
* @param regions the initial regions created for the table
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-15575">HBASE-15575</a>).
@ -122,7 +122,7 @@ public interface MasterObserver extends Coprocessor {
* of create table RPC call. Called as part of create table handler and
* it is async to the create RPC call.
* @param ctx the environment to interact with the framework and master
* @param desc the HTableDescriptor for the table
* @param desc the read-only HTableDescriptor for the table
* @param regions the initial regions created for the table
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-15575">HBASE-15575</a>).
@ -368,7 +368,7 @@ public interface MasterObserver extends Coprocessor {
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param htd the HTableDescriptor
* @param htd the read-only HTableDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-15575">HBASE-15575</a>).
* Use {@link #preModifyTableAction(ObserverContext, TableName, TableDescriptor)}.
@ -384,7 +384,7 @@ public interface MasterObserver extends Coprocessor {
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param htd the HTableDescriptor
* @param htd the read-only HTableDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #postCompletedModifyTableAction(ObserverContext, TableName, TableDescriptor)}.
@ -435,7 +435,7 @@ public interface MasterObserver extends Coprocessor {
* add column RPC call.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #preAddColumnFamily(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -464,7 +464,7 @@ public interface MasterObserver extends Coprocessor {
* add column RPC call.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #postAddColumnFamily(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -493,7 +493,7 @@ public interface MasterObserver extends Coprocessor {
* add column handler.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>). Use
* {@link #preAddColumnFamilyAction(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -525,7 +525,7 @@ public interface MasterObserver extends Coprocessor {
* add column handler.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>). Use
* {@link #postCompletedAddColumnFamilyAction(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -557,7 +557,7 @@ public interface MasterObserver extends Coprocessor {
* modify column RPC call.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #preModifyColumnFamily(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -586,7 +586,7 @@ public interface MasterObserver extends Coprocessor {
* column RPC call.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #postModifyColumnFamily(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -615,7 +615,7 @@ public interface MasterObserver extends Coprocessor {
* modify column handler.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>).
* Use {@link #preModifyColumnFamilyAction(ObserverContext, TableName, ColumnFamilyDescriptor)}.
@ -647,7 +647,7 @@ public interface MasterObserver extends Coprocessor {
* column handler.
* @param ctx the environment to interact with the framework and master
* @param tableName the name of the table
* @param columnFamily the HColumnDescriptor
* @param columnFamily the read-only HColumnDescriptor
* @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
* (<a href="https://issues.apache.org/jira/browse/HBASE-13645">HBASE-13645</a>). Use
* {@link #postCompletedModifyColumnFamilyAction(ObserverContext,TableName,ColumnFamilyDescriptor)}.
@ -1284,10 +1284,10 @@ public interface MasterObserver extends Coprocessor {
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the TableDescriptor of the table to snapshot
* @param tableDescriptor the TableDescriptor of the table to snapshot
*/
default void preSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**
@ -1295,10 +1295,10 @@ public interface MasterObserver extends Coprocessor {
* Called as part of snapshot RPC call.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the TableDescriptor of the table to snapshot
* @param tableDescriptor the TableDescriptor of the table to snapshot
*/
default void postSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**
@ -1325,10 +1325,10 @@ public interface MasterObserver extends Coprocessor {
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the TableDescriptor of the table to create
* @param tableDescriptor the TableDescriptor of the table to create
*/
default void preCloneSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**
@ -1336,10 +1336,10 @@ public interface MasterObserver extends Coprocessor {
* Called as part of restoreSnapshot RPC call.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the v of the table to create
* @param tableDescriptor the v of the table to create
*/
default void postCloneSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**
@ -1348,10 +1348,10 @@ public interface MasterObserver extends Coprocessor {
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the TableDescriptor of the table to restore
* @param tableDescriptor the TableDescriptor of the table to restore
*/
default void preRestoreSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**
@ -1359,10 +1359,10 @@ public interface MasterObserver extends Coprocessor {
* Called as part of restoreSnapshot RPC call.
* @param ctx the environment to interact with the framework and master
* @param snapshot the SnapshotDescriptor for the snapshot
* @param hTableDescriptor the TableDescriptor of the table to restore
* @param tableDescriptor the TableDescriptor of the table to restore
*/
default void postRestoreSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
final SnapshotDescription snapshot, final TableDescriptor tableDescriptor)
throws IOException {}
/**

View File

@ -22,7 +22,6 @@ package org.apache.hadoop.hbase.master;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang.ClassUtils;
import org.apache.commons.logging.Log;
@ -38,6 +37,9 @@ import org.apache.hadoop.hbase.ProcedureInfo;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ImmutableHColumnDescriptor;
import org.apache.hadoop.hbase.client.ImmutableHTableDescriptor;
import org.apache.hadoop.hbase.client.MasterSwitchType;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.client.TableDescriptor;
@ -243,7 +245,7 @@ public class MasterCoprocessorHost
/* Implementation of hooks for invoking MasterObservers */
public void preCreateTable(final HTableDescriptor htd, final HRegionInfo[] regions)
public void preCreateTable(final TableDescriptor htd, final HRegionInfo[] regions)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
@ -254,7 +256,7 @@ public class MasterCoprocessorHost
});
}
public void postCreateTable(final HTableDescriptor htd, final HRegionInfo[] regions)
public void postCreateTable(final TableDescriptor htd, final HRegionInfo[] regions)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
@ -265,26 +267,26 @@ public class MasterCoprocessorHost
});
}
public void preCreateTableAction(final HTableDescriptor htd, final HRegionInfo[] regions,
public void preCreateTableAction(final TableDescriptor htd, final HRegionInfo[] regions,
final User user)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preCreateTableHandler(ctx, htd, regions);
oserver.preCreateTableHandler(ctx, toImmutableHTableDescriptor(htd), regions);
oserver.preCreateTableAction(ctx, htd, regions);
}
});
}
public void postCompletedCreateTableAction(
final HTableDescriptor htd, final HRegionInfo[] regions, final User user) throws IOException {
final TableDescriptor htd, final HRegionInfo[] regions, final User user) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postCreateTableHandler(ctx, htd, regions);
oserver.postCreateTableHandler(ctx, toImmutableHTableDescriptor(htd), regions);
oserver.postCompletedCreateTableAction(ctx, htd, regions);
}
});
@ -376,7 +378,7 @@ public class MasterCoprocessorHost
});
}
public void preModifyTable(final TableName tableName, final HTableDescriptor htd)
public void preModifyTable(final TableName tableName, final TableDescriptor htd)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
@ -387,7 +389,7 @@ public class MasterCoprocessorHost
});
}
public void postModifyTable(final TableName tableName, final HTableDescriptor htd)
public void postModifyTable(final TableName tableName, final TableDescriptor htd)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
@ -398,51 +400,51 @@ public class MasterCoprocessorHost
});
}
public void preModifyTableAction(final TableName tableName, final HTableDescriptor htd,
public void preModifyTableAction(final TableName tableName, final TableDescriptor htd,
final User user)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preModifyTableHandler(ctx, tableName, htd);
oserver.preModifyTableHandler(ctx, tableName, toImmutableHTableDescriptor(htd));
oserver.preModifyTableAction(ctx, tableName, htd);
}
});
}
public void postCompletedModifyTableAction(final TableName tableName, final HTableDescriptor htd,
public void postCompletedModifyTableAction(final TableName tableName, final TableDescriptor htd,
final User user)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postModifyTableHandler(ctx, tableName, htd);
oserver.postModifyTableHandler(ctx, tableName, toImmutableHTableDescriptor(htd));
oserver.postCompletedModifyTableAction(ctx, tableName, htd);
}
});
}
public boolean preAddColumn(final TableName tableName, final HColumnDescriptor columnFamily)
public boolean preAddColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException {
return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preAddColumn(ctx, tableName, columnFamily);
oserver.preAddColumn(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.preAddColumnFamily(ctx, tableName, columnFamily);
}
});
}
public void postAddColumn(final TableName tableName, final HColumnDescriptor columnFamily)
public void postAddColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postAddColumn(ctx, tableName, columnFamily);
oserver.postAddColumn(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.postAddColumnFamily(ctx, tableName, columnFamily);
}
});
@ -450,14 +452,14 @@ public class MasterCoprocessorHost
public boolean preAddColumnFamilyAction(
final TableName tableName,
final HColumnDescriptor columnFamily,
final ColumnFamilyDescriptor columnFamily,
final User user)
throws IOException {
return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preAddColumnHandler(ctx, tableName, columnFamily);
oserver.preAddColumnHandler(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.preAddColumnFamilyAction(ctx, tableName, columnFamily);
}
});
@ -465,38 +467,38 @@ public class MasterCoprocessorHost
public void postCompletedAddColumnFamilyAction(
final TableName tableName,
final HColumnDescriptor columnFamily,
final ColumnFamilyDescriptor columnFamily,
final User user)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postAddColumnHandler(ctx, tableName, columnFamily);
oserver.postAddColumnHandler(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.postCompletedAddColumnFamilyAction(ctx, tableName, columnFamily);
}
});
}
public boolean preModifyColumn(final TableName tableName, final HColumnDescriptor columnFamily)
public boolean preModifyColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException {
return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preModifyColumn(ctx, tableName, columnFamily);
oserver.preModifyColumn(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.preModifyColumnFamily(ctx, tableName, columnFamily);
}
});
}
public void postModifyColumn(final TableName tableName, final HColumnDescriptor columnFamily)
public void postModifyColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postModifyColumn(ctx, tableName, columnFamily);
oserver.postModifyColumn(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.postModifyColumnFamily(ctx, tableName, columnFamily);
}
});
@ -504,13 +506,13 @@ public class MasterCoprocessorHost
public boolean preModifyColumnFamilyAction(
final TableName tableName,
final HColumnDescriptor columnFamily,
final ColumnFamilyDescriptor columnFamily,
final User user) throws IOException {
return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.preModifyColumnHandler(ctx, tableName, columnFamily);
oserver.preModifyColumnHandler(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.preModifyColumnFamilyAction(ctx, tableName, columnFamily);
}
});
@ -518,13 +520,13 @@ public class MasterCoprocessorHost
public void postCompletedModifyColumnFamilyAction(
final TableName tableName,
final HColumnDescriptor columnFamily,
final ColumnFamilyDescriptor columnFamily,
final User user) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
throws IOException {
oserver.postModifyColumnHandler(ctx, tableName, columnFamily);
oserver.postModifyColumnHandler(ctx, tableName, toImmutableHColumnDescriptor(columnFamily));
oserver.postCompletedModifyColumnFamilyAction(ctx, tableName, columnFamily);
}
});
@ -1155,7 +1157,7 @@ public class MasterCoprocessorHost
}
public void preSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1166,7 +1168,7 @@ public class MasterCoprocessorHost
}
public void postSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1197,7 +1199,7 @@ public class MasterCoprocessorHost
}
public void preCloneSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1208,7 +1210,7 @@ public class MasterCoprocessorHost
}
public void postCloneSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1219,7 +1221,7 @@ public class MasterCoprocessorHost
}
public void preRestoreSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1230,7 +1232,7 @@ public class MasterCoprocessorHost
}
public void postRestoreSnapshot(final SnapshotDescription snapshot,
final HTableDescriptor hTableDescriptor) throws IOException {
final TableDescriptor hTableDescriptor) throws IOException {
execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {
@Override
public void call(MasterObserver oserver, ObserverContext<MasterCoprocessorEnvironment> ctx)
@ -1875,4 +1877,12 @@ public class MasterCoprocessorHost
}
});
}
private static ImmutableHTableDescriptor toImmutableHTableDescriptor(TableDescriptor desc) {
return new ImmutableHTableDescriptor(desc);
}
private static ImmutableHColumnDescriptor toImmutableHColumnDescriptor(ColumnFamilyDescriptor desc) {
return new ImmutableHColumnDescriptor(desc);
}
}