http://git-wip-us.apache.org/repos/asf/hbase-site/blob/5513910e/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html
index 53ed4f8..0fec9ed 100644
--- a/apidocs/overview-tree.html
+++ b/apidocs/overview-tree.html
@@ -843,25 +843,25 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a 
href="org/apache/hadoop/hbase/util/Order.html" title="enum in 
org.apache.hadoop.hbase.util"><span class="strong">Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a 
href="org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in 
org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a 
href="org/apache/hadoop/hbase/ProcedureState.html" title="enum in 
org.apache.hadoop.hbase"><span class="strong">ProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.encoding.<a 
href="org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum 
in org.apache.hadoop.hbase.io.encoding"><span 
class="strong">DataBlockEncoding</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in 
org.apache.hadoop.hbase.filter"><span 
class="strong">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum 
in org.apache.hadoop.hbase.filter"><span 
class="strong">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum 
in org.apache.hadoop.hbase.filter"><span 
class="strong">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in 
org.apache.hadoop.hbase.filter"><span 
class="strong">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" 
title="enum in org.apache.hadoop.hbase.filter"><span 
class="strong">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.encoding.<a 
href="org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum 
in org.apache.hadoop.hbase.io.encoding"><span 
class="strong">DataBlockEncoding</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a 
href="org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum 
in org.apache.hadoop.hbase.filter"><span 
class="strong">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/Durability.html" title="enum in 
org.apache.hadoop.hbase.client"><span class="strong">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in 
org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in 
org.apache.hadoop.hbase.client"><span 
class="strong">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in 
org.apache.hadoop.hbase.client"><span 
class="strong">IsolationLevel</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/CompactionState.html" title="enum in 
org.apache.hadoop.hbase.client"><span 
class="strong">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in 
org.apache.hadoop.hbase.client"><span 
class="strong">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in 
org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/CompactType.html" title="enum in 
org.apache.hadoop.hbase.client"><span class="strong">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a 
href="org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in 
org.apache.hadoop.hbase.client"><span 
class="strong">SnapshotType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.security.<a 
href="org/apache/hadoop/hbase/client/security/SecurityCapability.html" 
title="enum in org.apache.hadoop.hbase.client.security"><span 
class="strong">SecurityCapability</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a 
href="org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in 
org.apache.hadoop.hbase.regionserver"><span 
class="strong">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum 
in org.apache.hadoop.hbase.quotas"><span 
class="strong">ThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in 
org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in 
org.apache.hadoop.hbase.quotas"><span class="strong">QuotaScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in 
org.apache.hadoop.hbase.quotas"><span 
class="strong">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a 
href="org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum 
in org.apache.hadoop.hbase.quotas"><span 
class="strong">ThrottlingException.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/5513910e/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html 
b/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html
index 4c2a3b3..12f49be 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/ServerName.html
@@ -308,118 +308,119 @@
 <span class="sourceLineNo">300</span>    if (compare != 0) return compare;<a 
name="line.300"></a>
 <span class="sourceLineNo">301</span>    compare = this.getPort() - 
other.getPort();<a name="line.301"></a>
 <span class="sourceLineNo">302</span>    if (compare != 0) return compare;<a 
name="line.302"></a>
-<span class="sourceLineNo">303</span>    return (int)(this.getStartcode() - 
other.getStartcode());<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Override<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public int hashCode() {<a 
name="line.307"></a>
-<span class="sourceLineNo">308</span>    return getServerName().hashCode();<a 
name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public boolean equals(Object o) {<a 
name="line.312"></a>
-<span class="sourceLineNo">313</span>    if (this == o) return true;<a 
name="line.313"></a>
-<span class="sourceLineNo">314</span>    if (o == null) return false;<a 
name="line.314"></a>
-<span class="sourceLineNo">315</span>    if (!(o instanceof ServerName)) 
return false;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    return this.compareTo((ServerName)o) 
== 0;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param left<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param right<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return True if 
&lt;code&gt;other&lt;/code&gt; has same hostname and port.<a 
name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static boolean 
isSameHostnameAndPort(final ServerName left,<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      final ServerName right) {<a 
name="line.325"></a>
-<span class="sourceLineNo">326</span>    if (left == null) return false;<a 
name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (right == null) return false;<a 
name="line.327"></a>
-<span class="sourceLineNo">328</span>    return 
left.getHostname().compareToIgnoreCase(right.getHostname()) == 0 &amp;&amp;<a 
name="line.328"></a>
-<span class="sourceLineNo">329</span>      left.getPort() == 
right.getPort();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  /**<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * Use this method instantiating a 
{@link ServerName} from bytes<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * gotten from a call to {@link 
#getVersionedBytes()}.  Will take care of the<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * case where bytes were written by an 
earlier version of hbase.<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param versionedBytes Pass bytes 
gotten from a call to {@link #getVersionedBytes()}<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return A ServerName instance.<a 
name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @see #getVersionedBytes()<a 
name="line.338"></a>
-<span class="sourceLineNo">339</span>   */<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  public static ServerName 
parseVersionedServerName(final byte [] versionedBytes) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    // Version is a short.<a 
name="line.341"></a>
-<span class="sourceLineNo">342</span>    short version = 
Bytes.toShort(versionedBytes);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    if (version == VERSION) {<a 
name="line.343"></a>
-<span class="sourceLineNo">344</span>      int length = versionedBytes.length 
- Bytes.SIZEOF_SHORT;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      return 
valueOf(Bytes.toString(versionedBytes, Bytes.SIZEOF_SHORT, length));<a 
name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // Presume the bytes were written 
with an old version of hbase and that the<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // bytes are actually a String of the 
form "'&lt;hostname&gt;' ':' '&lt;port&gt;'".<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    return 
valueOf(Bytes.toString(versionedBytes), NON_STARTCODE);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * @param str Either an instance of 
{@link ServerName#toString()} or a<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * "'&amp;lt;hostname&amp;gt;' ':' 
'&amp;lt;port&amp;gt;'".<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A ServerName instance.<a 
name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static ServerName 
parseServerName(final String str) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return 
SERVERNAME_PATTERN.matcher(str).matches()? valueOf(str) :<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        valueOf(str, NON_STARTCODE);<a 
name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    return 
Long.compare(this.getStartcode(), other.getStartcode());<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>  @Override<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public int hashCode() {<a 
name="line.308"></a>
+<span class="sourceLineNo">309</span>    return getServerName().hashCode();<a 
name="line.309"></a>
+<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  @Override<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  public boolean equals(Object o) {<a 
name="line.313"></a>
+<span class="sourceLineNo">314</span>    if (this == o) return true;<a 
name="line.314"></a>
+<span class="sourceLineNo">315</span>    if (o == null) return false;<a 
name="line.315"></a>
+<span class="sourceLineNo">316</span>    if (!(o instanceof ServerName)) 
return false;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    return this.compareTo((ServerName)o) 
== 0;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param left<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @param right<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @return True if 
&lt;code&gt;other&lt;/code&gt; has same hostname and port.<a 
name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static boolean 
isSameHostnameAndPort(final ServerName left,<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      final ServerName right) {<a 
name="line.326"></a>
+<span class="sourceLineNo">327</span>    if (left == null) return false;<a 
name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (right == null) return false;<a 
name="line.328"></a>
+<span class="sourceLineNo">329</span>    return 
left.getHostname().compareToIgnoreCase(right.getHostname()) == 0 &amp;&amp;<a 
name="line.329"></a>
+<span class="sourceLineNo">330</span>      left.getPort() == 
right.getPort();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * Use this method instantiating a 
{@link ServerName} from bytes<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * gotten from a call to {@link 
#getVersionedBytes()}.  Will take care of the<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * case where bytes were written by an 
earlier version of hbase.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param versionedBytes Pass bytes 
gotten from a call to {@link #getVersionedBytes()}<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @return A ServerName instance.<a 
name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @see #getVersionedBytes()<a 
name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static ServerName 
parseVersionedServerName(final byte [] versionedBytes) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    // Version is a short.<a 
name="line.342"></a>
+<span class="sourceLineNo">343</span>    short version = 
Bytes.toShort(versionedBytes);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    if (version == VERSION) {<a 
name="line.344"></a>
+<span class="sourceLineNo">345</span>      int length = versionedBytes.length 
- Bytes.SIZEOF_SHORT;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      return 
valueOf(Bytes.toString(versionedBytes, Bytes.SIZEOF_SHORT, length));<a 
name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // Presume the bytes were written 
with an old version of hbase and that the<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // bytes are actually a String of the 
form "'&lt;hostname&gt;' ':' '&lt;port&gt;'".<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return 
valueOf(Bytes.toString(versionedBytes), NON_STARTCODE);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param str Either an instance of 
{@link ServerName#toString()} or a<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * "'&amp;lt;hostname&amp;gt;' ':' 
'&amp;lt;port&amp;gt;'".<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @return A ServerName instance.<a 
name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public static ServerName 
parseServerName(final String str) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return 
SERVERNAME_PATTERN.matcher(str).matches()? valueOf(str) :<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        valueOf(str, NON_STARTCODE);<a 
name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
 <span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>  /**<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @return true if the String follows 
the pattern of {@link ServerName#toString()}, false<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   *  otherwise.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  public static boolean 
isFullServerName(final String str){<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    if (str == null ||str.isEmpty()) 
return false;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return 
SERVERNAME_PATTERN.matcher(str).matches();<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * Get a ServerName from the passed in 
data bytes.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @param data Data with a serialize 
server name in it; can handle the old style<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * servername where servername was host 
and port.  Works too with data that<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * begins w/ the pb 'PBUF' magic and 
that is then followed by a protobuf that<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * has a serialized {@link ServerName} 
in it.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @return Returns null if 
&lt;code&gt;data&lt;/code&gt; is null else converts passed data<a 
name="line.378"></a>
-<span class="sourceLineNo">379</span>   * to a ServerName instance.<a 
name="line.379"></a>
-<span class="sourceLineNo">380</span>   * @throws DeserializationException <a 
name="line.380"></a>
-<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  public static ServerName 
parseFrom(final byte [] data) throws DeserializationException {<a 
name="line.382"></a>
-<span class="sourceLineNo">383</span>    if (data == null || data.length &lt;= 
0) return null;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    if 
(ProtobufMagic.isPBMagicPrefix(data)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      int prefixLen = 
ProtobufMagic.lengthOfPBMagic();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      try {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        ZooKeeperProtos.Master rss =<a 
name="line.387"></a>
-<span class="sourceLineNo">388</span>          
ZooKeeperProtos.Master.PARSER.parseFrom(data, prefixLen, data.length - 
prefixLen);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName sn = 
rss.getMaster();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        return valueOf(sn.getHostName(), 
sn.getPort(), sn.getStartCode());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      } catch 
(InvalidProtocolBufferException e) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        // A failed parse of the znode is 
pretty catastrophic. Rather than loop<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        // retrying hoping the bad bytes 
will changes, and rather than change<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        // the signature on this method 
to add an IOE which will send ripples all<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        // over the code base, throw a 
RuntimeException.  This should "never" happen.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        // Fail fast if it does.<a 
name="line.396"></a>
-<span class="sourceLineNo">397</span>        throw new 
DeserializationException(e);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    // The str returned could be old 
style -- pre hbase-1502 -- which was<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    // hostname and port seperated by a 
colon rather than hostname, port and<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // startcode delimited by a ','.<a 
name="line.402"></a>
-<span class="sourceLineNo">403</span>    String str = Bytes.toString(data);<a 
name="line.403"></a>
-<span class="sourceLineNo">404</span>    int index = 
str.indexOf(ServerName.SERVERNAME_SEPARATOR);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (index != -1) {<a 
name="line.405"></a>
-<span class="sourceLineNo">406</span>      // Presume its ServerName 
serialized with versioned bytes.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      return 
ServerName.parseVersionedServerName(data);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Presume it a hostname:port 
format.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    String hostname = 
Addressing.parseHostname(str);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    int port = 
Addressing.parsePort(str);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return valueOf(hostname, port, 
-1L);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>}<a name="line.414"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @return true if the String follows 
the pattern of {@link ServerName#toString()}, false<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   *  otherwise.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public static boolean 
isFullServerName(final String str){<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    if (str == null ||str.isEmpty()) 
return false;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return 
SERVERNAME_PATTERN.matcher(str).matches();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * Get a ServerName from the passed in 
data bytes.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param data Data with a serialize 
server name in it; can handle the old style<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * servername where servername was host 
and port.  Works too with data that<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * begins w/ the pb 'PBUF' magic and 
that is then followed by a protobuf that<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * has a serialized {@link ServerName} 
in it.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @return Returns null if 
&lt;code&gt;data&lt;/code&gt; is null else converts passed data<a 
name="line.379"></a>
+<span class="sourceLineNo">380</span>   * to a ServerName instance.<a 
name="line.380"></a>
+<span class="sourceLineNo">381</span>   * @throws DeserializationException <a 
name="line.381"></a>
+<span class="sourceLineNo">382</span>   */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public static ServerName 
parseFrom(final byte [] data) throws DeserializationException {<a 
name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (data == null || data.length &lt;= 
0) return null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if 
(ProtobufMagic.isPBMagicPrefix(data)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      int prefixLen = 
ProtobufMagic.lengthOfPBMagic();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      try {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        ZooKeeperProtos.Master rss =<a 
name="line.388"></a>
+<span class="sourceLineNo">389</span>          
ZooKeeperProtos.Master.PARSER.parseFrom(data, prefixLen, data.length - 
prefixLen);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName sn = 
rss.getMaster();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        return valueOf(sn.getHostName(), 
sn.getPort(), sn.getStartCode());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      } catch 
(InvalidProtocolBufferException e) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        // A failed parse of the znode is 
pretty catastrophic. Rather than loop<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        // retrying hoping the bad bytes 
will changes, and rather than change<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        // the signature on this method 
to add an IOE which will send ripples all<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        // over the code base, throw a 
RuntimeException.  This should "never" happen.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        // Fail fast if it does.<a 
name="line.397"></a>
+<span class="sourceLineNo">398</span>        throw new 
DeserializationException(e);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    // The str returned could be old 
style -- pre hbase-1502 -- which was<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    // hostname and port seperated by a 
colon rather than hostname, port and<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    // startcode delimited by a ','.<a 
name="line.403"></a>
+<span class="sourceLineNo">404</span>    String str = Bytes.toString(data);<a 
name="line.404"></a>
+<span class="sourceLineNo">405</span>    int index = 
str.indexOf(ServerName.SERVERNAME_SEPARATOR);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    if (index != -1) {<a 
name="line.406"></a>
+<span class="sourceLineNo">407</span>      // Presume its ServerName 
serialized with versioned bytes.<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      return 
ServerName.parseVersionedServerName(data);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Presume it a hostname:port 
format.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    String hostname = 
Addressing.parseHostname(str);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    int port = 
Addressing.parsePort(str);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    return valueOf(hostname, port, 
-1L);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>}<a name="line.415"></a>
 
 
 

Reply via email to