@InterfaceAudience.Private public final class Constraints extends Object
Constraints can be added on table load time, via the HTableDescriptor
.
NOTE: this class is NOT thread safe. Concurrent setting/enabling/disabling of constraints can cause constraints to be run at incorrect times or not at all.
Modifier and Type | Field and Description |
---|---|
private static Pattern |
CONSTRAINT_HTD_ATTR_KEY_PATTERN |
private static String |
CONSTRAINT_HTD_KEY_PREFIX |
private static Comparator<Constraint> |
constraintComparator |
private static String |
COUNTER_KEY |
private static int |
DEFAULT_PRIORITY |
private static String |
ENABLED_KEY |
private static org.slf4j.Logger |
LOG |
private static long |
MIN_PRIORITY |
private static String |
PRIORITY_KEY |
private static long |
UNSET_PRIORITY |
Modifier | Constructor and Description |
---|---|
private |
Constraints() |
Modifier and Type | Method and Description |
---|---|
static void |
add(HTableDescriptor desc,
Class<? extends Constraint>... constraints)
Add configuration-less constraints to the table.
|
static void |
add(HTableDescriptor desc,
Class<? extends Constraint> constraint,
org.apache.hadoop.conf.Configuration conf)
Add a
Constraint to the table with the given configuration |
static void |
add(HTableDescriptor desc,
Pair<Class<? extends Constraint>,org.apache.hadoop.conf.Configuration>... constraints)
Add constraints and their associated configurations to the table.
|
private static void |
addConstraint(HTableDescriptor desc,
Class<? extends Constraint> clazz,
org.apache.hadoop.conf.Configuration conf,
long priority)
Write the raw constraint and configuration to the descriptor.
|
private static void |
changeConstraintEnabled(HTableDescriptor desc,
Class<? extends Constraint> clazz,
boolean enabled)
Change the whether the constraint (if it is already present) is enabled or disabled.
|
private static org.apache.hadoop.conf.Configuration |
configure(org.apache.hadoop.conf.Configuration conf,
boolean enabled,
long priority)
Setup the configuration for a constraint as to whether it is enabled and its priority n * on
which to base the new configuration n * true if it should be run n * relative to other
constraints
|
static void |
disable(HTableDescriptor desc)
Turn off processing constraints for a given table, even if constraints have been turned on or
added.
|
static void |
disableConstraint(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Disable the given
Constraint . |
static void |
enable(HTableDescriptor desc)
Enable constraints on a table.
|
static void |
enableConstraint(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Enable the given
Constraint . |
static boolean |
enabled(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Check to see if the given constraint is enabled.
|
(package private) static List<? extends Constraint> |
getConstraints(TableDescriptor desc,
ClassLoader classloader)
Get the constraints stored in the table descriptor n * To read from n * To use when loading
classes.
|
private static Pair<String,String> |
getKeyValueForClass(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Get the kv
Map.Entry in the descriptor for the specified class |
private static long |
getNextPriority(HTableDescriptor desc) |
static boolean |
has(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Check to see if the Constraint is currently set.
|
private static org.apache.hadoop.conf.Configuration |
readConfiguration(byte[] bytes)
Read the
Configuration stored in the byte stream. |
private static org.apache.hadoop.conf.Configuration |
readConfiguration(String bytes)
Read in the configuration from the String encoded configuration n * to read from
|
static void |
remove(HTableDescriptor desc)
Remove all
Constraints that have been added to the table and turn off the
constraint processing. |
static void |
remove(HTableDescriptor desc,
Class<? extends Constraint> clazz)
Remove the constraint (and associated information) for the table descriptor.
|
private static String |
serializeConfiguration(org.apache.hadoop.conf.Configuration conf)
Write the configuration to a String n * to write
|
private static String |
serializeConstraintClass(Class<? extends Constraint> clazz)
Just write the class to a String representation of the class as a key for the
HTableDescriptor n * Constraint class to convert to a HTableDescriptor key |
static void |
setConfiguration(HTableDescriptor desc,
Class<? extends Constraint> clazz,
org.apache.hadoop.conf.Configuration configuration)
Update the configuration for the
Constraint ; does not change the order in which the
constraint is run. |
private static void |
updateLatestPriority(HTableDescriptor desc,
long priority) |
private static void |
writeConstraint(HTableDescriptor desc,
String key,
org.apache.hadoop.conf.Configuration conf)
Write the given key and associated configuration to the
HTableDescriptor |
private static final int DEFAULT_PRIORITY
private static final org.slf4j.Logger LOG
private static final String CONSTRAINT_HTD_KEY_PREFIX
private static final Pattern CONSTRAINT_HTD_ATTR_KEY_PATTERN
private static final String ENABLED_KEY
private static final String PRIORITY_KEY
private static final long MIN_PRIORITY
private static final long UNSET_PRIORITY
private static String COUNTER_KEY
private static final Comparator<Constraint> constraintComparator
private Constraints()
public static void enable(HTableDescriptor desc) throws IOException
Currently, if you attempt to add a constraint to the table, then Constraints will automatically
be turned on. n * table description to add the processor n * If the ConstraintProcessor
CP couldn't be added to the table.
IOException
public static void disable(HTableDescriptor desc)
HTableDescriptor
where to disable Constraints
.public static void remove(HTableDescriptor desc)
Constraints
that have been added to the table and turn off the
constraint processing.
All Configurations
and their associated Constraint
are removed. n
* HTableDescriptor
to remove Constraints
from.
public static boolean has(HTableDescriptor desc, Class<? extends Constraint> clazz)
HTableDescriptor
to check n *
Constraint
class to check for.Constraint
is present, even if it is disabled.
false otherwise.private static Pair<String,String> getKeyValueForClass(HTableDescriptor desc, Class<? extends Constraint> clazz)
Map.Entry
in the descriptor for the specified classdesc
- HTableDescriptor
to readclazz
- To search forPair
of <key, value> in the table, if that class is present.
NULL
otherwise.public static void add(HTableDescriptor desc, Class<? extends Constraint>... constraints) throws IOException
This will overwrite any configuration associated with the previous constraint of the same class.
Each constraint, when added to the table, will have a specific priority, dictating the order in
which the Constraint
will be run. A Constraint
earlier in the list will be run
before those later in the list. The same logic applies between two Constraints over time
(earlier added is run first on the regionserver). n * HTableDescriptor
to add
Constraints
n * Constraints
to add. All constraints are
considered automatically enabled on add n * If constraint could not be serialized/added to
table
IOException
public static void add(HTableDescriptor desc, Pair<Class<? extends Constraint>,org.apache.hadoop.conf.Configuration>... constraints) throws IOException
Adding the same constraint class twice will overwrite the first constraint's configuration
Each constraint, when added to the table, will have a specific priority, dictating the order in
which the Constraint
will be run. A Constraint
earlier in the list will be run
before those later in the list. The same logic applies between two Constraints over time
(earlier added is run first on the regionserver). n * HTableDescriptor
to add a
Constraint
n * Pair
of a Constraint
and its associated
Configuration
. The Constraint will be configured on load with the specified
configuration.All constraints are considered automatically enabled on add n * if any constraint
could not be deserialized. Assumes if 1 constraint is not loaded properly, something has gone
terribly wrong and that all constraints need to be enforced.
IOException
public static void add(HTableDescriptor desc, Class<? extends Constraint> constraint, org.apache.hadoop.conf.Configuration conf) throws IOException
Constraint
to the table with the given configuration
Each constraint, when added to the table, will have a specific priority, dictating the order in
which the Constraint
will be run. A Constraint
added will run on the
regionserver before those added to the HTableDescriptor
later. n * table descriptor to
the constraint to n * to be added n * configuration associated with the constraint n * if any
constraint could not be deserialized. Assumes if 1 constraint is not loaded properly, something
has gone terribly wrong and that all constraints need to be enforced.
IOException
private static void addConstraint(HTableDescriptor desc, Class<? extends Constraint> clazz, org.apache.hadoop.conf.Configuration conf, long priority) throws IOException
This method takes care of creating a new configuration based on the passed in configuration and then updating that with enabled and priority of the constraint.
When a constraint is added, it is automatically enabled.
IOException
private static org.apache.hadoop.conf.Configuration configure(org.apache.hadoop.conf.Configuration conf, boolean enabled, long priority)
HTableDescriptor
private static String serializeConstraintClass(Class<? extends Constraint> clazz)
HTableDescriptor
n * Constraint class to convert to a HTableDescriptor
keyHTableDescriptor
private static void writeConstraint(HTableDescriptor desc, String key, org.apache.hadoop.conf.Configuration conf) throws IOException
HTableDescriptor
IOException
private static String serializeConfiguration(org.apache.hadoop.conf.Configuration conf) throws IOException
IOException
private static org.apache.hadoop.conf.Configuration readConfiguration(byte[] bytes) throws IOException
Configuration
stored in the byte stream. n * to read fromIOException
private static org.apache.hadoop.conf.Configuration readConfiguration(String bytes) throws IOException
IOException
private static long getNextPriority(HTableDescriptor desc)
private static void updateLatestPriority(HTableDescriptor desc, long priority)
public static void setConfiguration(HTableDescriptor desc, Class<? extends Constraint> clazz, org.apache.hadoop.conf.Configuration configuration) throws IOException, IllegalArgumentException
Constraint
; does not change the order in which the
constraint is run. n * HTableDescriptor
to update n * Constraint
to update n *
to update the Constraint
with. n * if the Constraint was not stored correctly n * if
the Constraint was not present on this table.IOException
IllegalArgumentException
public static void remove(HTableDescriptor desc, Class<? extends Constraint> clazz)
HTableDescriptor
to modify n * Constraint
class to removepublic static void enableConstraint(HTableDescriptor desc, Class<? extends Constraint> clazz) throws IOException
Constraint
. Retains all the information (e.g. Configuration) for the
Constraint
, but makes sure that it gets loaded on the table. n *
HTableDescriptor
to modify n * Constraint
to enable n * If the constraint
cannot be properly deserializedIOException
public static void disableConstraint(HTableDescriptor desc, Class<? extends Constraint> clazz) throws IOException
Constraint
. Retains all the information (e.g. Configuration) for the
Constraint
, but it just doesn't load the Constraint
on the table. n *
HTableDescriptor
to modify n * Constraint
to disable. n * if the constraint
cannot be foundIOException
private static void changeConstraintEnabled(HTableDescriptor desc, Class<? extends Constraint> clazz, boolean enabled) throws IOException
IOException
public static boolean enabled(HTableDescriptor desc, Class<? extends Constraint> clazz) throws IOException
HTableDescriptor
to check. n *
Constraint
to check forConstraint
is present and enabled. false
otherwise. n * If the constraint has improperly stored in the tableIOException
static List<? extends Constraint> getConstraints(TableDescriptor desc, ClassLoader classloader) throws IOException
Constraints
n * if any part of reading/arguments
failsIOException
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.