blob: a1273cfc141cffb34a9025b0f0607801ff9088cd [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ConfigurationManager (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ConfigurationManager (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ConfigurationManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/conf/ConfigurationManager.html" target="_top">Frames</a></li>
<li><a href="ConfigurationManager.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.hbase.conf</div>
<h2 title="Class ConfigurationManager" class="title">Class ConfigurationManager</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.conf.ConfigurationManager</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceAudience.Private
@InterfaceStability.Evolving
public class <a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.74">ConfigurationManager</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Maintains the set of all the classes which would like to get notified
when the Configuration is reloaded from the disk in the Online Configuration
Change mechanism, which lets you update certain configuration properties
on-the-fly, without having to restart the cluster.
<p>
If a class has configuration properties which you would like to be able to
change on-the-fly, do the following:
<ol>
<li>Implement the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf"><code>ConfigurationObserver</code></a> interface. This would require
you to implement the
<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-"><code>ConfigurationObserver.onConfigurationChange(Configuration)</code></a>
method. This is a callback that is used to notify your class' instance
that the configuration has changed. In this method, you need to check
if the new values for the properties that are of interest to your class
are different from the cached values. If yes, update them.
<br />
However, be careful with this. Certain properties might be trivially
mutable online, but others might not. Two properties might be trivially
mutable by themselves, but not when changed together. For example, if a
method uses properties "a" and "b" to make some decision, and is running
in parallel when the notifyOnChange() method updates "a", but hasn't
yet updated "b", it might make a decision on the basis of a new value of
"a", and an old value of "b". This might introduce subtle bugs. This
needs to be dealt on a case-by-case basis, and this class does not provide
any protection from such cases.</li>
<li>Register the appropriate instance of the class with the
<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a> instance, using the
<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#registerObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-"><code>registerObserver(ConfigurationObserver)</code></a>
method. Be careful not to do this in the constructor, as you might cause
the 'this' reference to escape. Use a factory method, or an initialize()
method which is called after the construction of the object.</li>
<li>Deregister the instance using the
<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#deregisterObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-"><code>deregisterObserver(ConfigurationObserver)</code></a>
method when it is going out of scope. In case you are not able to do that
for any reason, it is still okay, since entries for dead observers are
automatically collected during GC. But nonetheless, it is still a good
practice to deregister your observer, whenever possible.</li>
</ol>
</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#configurationObservers">configurationObservers</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#ConfigurationManager--">ConfigurationManager</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#containsObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">containsObserver</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#deregisterObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">deregisterObserver</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</code>
<div class="block">Deregister an observer class</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#getNumObservers--">getNumObservers</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#notifyAllObservers-org.apache.hadoop.conf.Configuration-">notifyAllObservers</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
<div class="block">The conf object has been repopulated from disk, and we have to notify
all the observers that are expressed interest to do that.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html#registerObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">registerObserver</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</code>
<div class="block">Register an observer class</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="LOG">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.75">LOG</a></pre>
</li>
</ul>
<a name="configurationObservers">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>configurationObservers</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.81">configurationObservers</a></pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ConfigurationManager--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ConfigurationManager</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.74">ConfigurationManager</a>()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="registerObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerObserver</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.88">registerObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</pre>
<div class="block">Register an observer class</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>observer</code> - observer to be registered.</dd>
</dl>
</li>
</ul>
<a name="deregisterObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deregisterObserver</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.101">deregisterObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</pre>
<div class="block">Deregister an observer class</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>observer</code> - to be deregistered.</dd>
</dl>
</li>
</ul>
<a name="notifyAllObservers-org.apache.hadoop.conf.Configuration-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notifyAllObservers</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.114">notifyAllObservers</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
<div class="block">The conf object has been repopulated from disk, and we have to notify
all the observers that are expressed interest to do that.</div>
</li>
</ul>
<a name="getNumObservers--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumObservers</h4>
<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.133">getNumObservers</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of observers.</dd>
</dl>
</li>
</ul>
<a name="containsObserver-org.apache.hadoop.hbase.conf.ConfigurationObserver-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>containsObserver</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/conf/ConfigurationManager.html#line.142">containsObserver</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>&nbsp;observer)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if contains the observer, for unit test only</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ConfigurationManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/conf/ConfigurationManager.html" target="_top">Frames</a></li>
<li><a href="ConfigurationManager.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>