blob: c8df15ea5dea85291978850be0c0a7d1a4dec6da [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>BlockingRpcConnection (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase.ipc, class: BlockingRpcConnection">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BlockingRpcConnection.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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&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="sub-nav-list">
<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>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase.ipc</a></div>
<h1 title="Class BlockingRpcConnection" class="title">Class BlockingRpcConnection</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">org.apache.hadoop.hbase.ipc.RpcConnection</a>
<div class="inheritance">org.apache.hadoop.hbase.ipc.BlockingRpcConnection</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Private
</span><span class="modifiers">class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-81">BlockingRpcConnection</a></span>
<span class="extends-implements">extends <a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a>
implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></span></div>
<div class="block">Thread that reads responses and notifies callers. Each connection owns a socket connected to a
remote address. Calls are multiplexed through this socket: responses may be delivered out of
order.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="BlockingRpcConnection.CallSender.html" class="type-name-link" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcConnection.CallSender</a></code></div>
<div class="col-last even-row-color">
<div class="block">If the client wants to interrupt its calls easily (i.e.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ConcurrentMap.html" title="class or interface in java.util.concurrent" class="external-link">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#calls" class="member-name-link">calls</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final <a href="BlockingRpcConnection.CallSender.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcConnection.CallSender</a></code></div>
<div class="col-second odd-row-color"><code><a href="#callSender" class="member-name-link">callSender</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#closed" class="member-name-link">closed</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private byte[]</code></div>
<div class="col-second odd-row-color"><code><a href="#connectionHeaderPreamble" class="member-name-link">connectionHeaderPreamble</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private byte[]</code></div>
<div class="col-second even-row-color"><code><a href="#connectionHeaderWithLength" class="member-name-link">connectionHeaderWithLength</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/DataInputStream.html" title="class or interface in java.io" class="external-link">DataInputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#in" class="member-name-link">in</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private static final org.slf4j.Logger</code></div>
<div class="col-second even-row-color"><code><a href="#LOG" class="member-name-link">LOG</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/DataOutputStream.html" title="class or interface in java.io" class="external-link">DataOutputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#out" class="member-name-link">out</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="BlockingRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcClient</a></code></div>
<div class="col-second even-row-color"><code><a href="#rpcClient" class="member-name-link">rpcClient</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private <a href="../security/HBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcClient</a></code></div>
<div class="col-second odd-row-color"><code><a href="#saslRpcClient" class="member-name-link">saslRpcClient</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
<div class="col-second even-row-color"><code><a href="#socket" class="member-name-link">socket</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Thread.html" title="class or interface in java.lang" class="external-link">Thread</a></code></div>
<div class="col-second odd-row-color"><code><a href="#thread" class="member-name-link">thread</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#threadName" class="member-name-link">threadName</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private boolean</code></div>
<div class="col-second odd-row-color"><code><a href="#waitingConnectionHeaderResponse" class="member-name-link">waitingConnectionHeaderResponse</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.hadoop.hbase.ipc.RpcConnection">Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></h3>
<code><a href="RpcConnection.html#cellBlockBuilder">cellBlockBuilder</a>, <a href="RpcConnection.html#codec">codec</a>, <a href="RpcConnection.html#compressor">compressor</a>, <a href="RpcConnection.html#conf">conf</a>, <a href="RpcConnection.html#CRYPTO_AES_ENABLED_DEFAULT">CRYPTO_AES_ENABLED_DEFAULT</a>, <a href="RpcConnection.html#CRYPTO_AES_ENABLED_KEY">CRYPTO_AES_ENABLED_KEY</a>, <a href="RpcConnection.html#lastTouched">lastTouched</a>, <a href="RpcConnection.html#metrics">metrics</a>, <a href="RpcConnection.html#provider">provider</a>, <a href="RpcConnection.html#reloginMaxBackoff">reloginMaxBackoff</a>, <a href="RpcConnection.html#remoteId">remoteId</a>, <a href="RpcConnection.html#securityInfo">securityInfo</a>, <a href="RpcConnection.html#timeoutTimer">timeoutTimer</a>, <a href="RpcConnection.html#token">token</a>, <a href="RpcConnection.html#useSasl">useSasl</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.hbase.ipc.BlockingRpcClient,org.apache.hadoop.hbase.ipc.ConnectionId)" class="member-name-link">BlockingRpcConnection</a><wbr>(<a href="BlockingRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcClient</a>&nbsp;rpcClient,
<a href="ConnectionId.html" title="class in org.apache.hadoop.hbase.ipc">ConnectionId</a>&nbsp;remoteId)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#callTimeout(org.apache.hadoop.hbase.ipc.Call)" class="member-name-link">callTimeout</a><wbr>(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#chooseServerPrincipal(java.io.InputStream,java.io.OutputStream)" class="member-name-link">chooseServerPrincipal</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#cleanupConnection()" class="member-name-link">cleanupConnection</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Does the clean up work after the connection is removed from the connection pool</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#closeConn(java.io.IOException)" class="member-name-link">closeConn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#closeSocket()" class="member-name-link">closeSocket</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createStreams(java.io.InputStream,java.io.OutputStream)" class="member-name-link">createStreams</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disposeSasl()" class="member-name-link">disposeSasl</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConnectionRegistry(java.io.InputStream,java.io.OutputStream,org.apache.hadoop.hbase.ipc.Call)" class="member-name-link">getConnectionRegistry</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream,
<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;connectionRegistryCall)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleConnectionFailure(int,int,java.io.IOException)" class="member-name-link">handleConnectionFailure</a><wbr>(int&nbsp;curRetries,
int&nbsp;maxRetries,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;ioe)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Handle connection failures If the current number of retries is equal to the max number of
retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting
again.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handleSaslConnectionFailure(int,int,java.lang.Exception,org.apache.hadoop.security.UserGroupInformation,java.lang.String)" class="member-name-link">handleSaslConnectionFailure</a><wbr>(int&nbsp;currRetries,
int&nbsp;maxRetries,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a>&nbsp;ex,
org.apache.hadoop.security.UserGroupInformation&nbsp;user,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverPrincipal)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">If multiple clients with the same principal try to connect to the same server at the same time,
the server assumes a replay attack is in progress.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isActive()" class="member-name-link">isActive</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Tell the idle connection sweeper whether we could be swept.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#negotiateCryptoAes(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta)" class="member-name-link">negotiateCryptoAes</a><wbr>(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta&nbsp;cryptoCipherMeta)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processResponseForConnectionHeader()" class="member-name-link">processResponseForConnectionHeader</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#readResponse()" class="member-name-link">readResponse</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendRequest(org.apache.hadoop.hbase.ipc.Call,org.apache.hadoop.hbase.ipc.HBaseRpcController)" class="member-name-link">sendRequest</a><wbr>(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call,
<a href="HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;pcrc)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setupConnection()" class="member-name-link">setupConnection</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setupIOstreams(org.apache.hadoop.hbase.ipc.Call)" class="member-name-link">setupIOstreams</a><wbr>(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;connectionRegistryCall)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setupSaslConnection(java.io.InputStream,java.io.OutputStream,java.lang.String)" class="member-name-link">setupSaslConnection</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;in2,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;out2,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverPrincipal)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#shutdown()" class="member-name-link">shutdown</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Just close connection.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForWork()" class="member-name-link">waitForWork</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeConnectionHeader()" class="member-name-link">writeConnectionHeader</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Write the connection header.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeConnectionHeaderPreamble(java.io.OutputStream)" class="member-name-link">writeConnectionHeaderPreamble</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;out)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Write the RPC header: <code>&lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;</code></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeRequest(org.apache.hadoop.hbase.ipc.Call)" class="member-name-link">writeRequest</a><wbr>(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Initiates a call by sending the parameter to the remote server.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.hadoop.hbase.ipc.RpcConnection">Methods inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></h3>
<code><a href="RpcConnection.html#chooseServerPrincipal(java.util.Set,org.apache.hadoop.hbase.ipc.Call)">chooseServerPrincipal</a>, <a href="RpcConnection.html#createSecurityPreambleCall(org.apache.hbase.thirdparty.com.google.protobuf.RpcCallback)">createSecurityPreambleCall</a>, <a href="RpcConnection.html#getConnectionHeader()">getConnectionHeader</a>, <a href="RpcConnection.html#getConnectionHeaderPreamble()">getConnectionHeaderPreamble</a>, <a href="RpcConnection.html#getLastTouched()">getLastTouched</a>, <a href="RpcConnection.html#getRemoteInetAddress(org.apache.hadoop.hbase.client.MetricsConnection)">getRemoteInetAddress</a>, <a href="RpcConnection.html#getServerPrincipals()">getServerPrincipals</a>, <a href="RpcConnection.html#isKerberosAuth()">isKerberosAuth</a>, <a href="RpcConnection.html#randomSelect(java.util.Collection)">randomSelect</a>, <a href="RpcConnection.html#readResponse(T,java.util.Map,org.apache.hadoop.hbase.ipc.Call,java.util.function.Consumer)">readResponse</a>, <a href="RpcConnection.html#remoteId()">remoteId</a>, <a href="RpcConnection.html#saslNegotiationDone(java.lang.String,boolean)">saslNegotiationDone</a>, <a href="RpcConnection.html#scheduleTimeoutTask(org.apache.hadoop.hbase.ipc.Call)">scheduleTimeoutTask</a>, <a href="RpcConnection.html#setLastTouched(long)">setLastTouched</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-84">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="rpcClient">
<h3>rpcClient</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="BlockingRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcClient</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-86">rpcClient</a></span></div>
</section>
</li>
<li>
<section class="detail" id="threadName">
<h3>threadName</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-88">threadName</a></span></div>
</section>
</li>
<li>
<section class="detail" id="thread">
<h3>thread</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Thread.html" title="class or interface in java.lang" class="external-link">Thread</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-89">thread</a></span></div>
</section>
</li>
<li>
<section class="detail" id="socket">
<h3>socket</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-94">socket</a></span></div>
</section>
</li>
<li>
<section class="detail" id="in">
<h3>in</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/DataInputStream.html" title="class or interface in java.io" class="external-link">DataInputStream</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-95">in</a></span></div>
</section>
</li>
<li>
<section class="detail" id="out">
<h3>out</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/DataOutputStream.html" title="class or interface in java.io" class="external-link">DataOutputStream</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-96">out</a></span></div>
</section>
</li>
<li>
<section class="detail" id="saslRpcClient">
<h3>saslRpcClient</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="../security/HBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcClient</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-98">saslRpcClient</a></span></div>
</section>
</li>
<li>
<section class="detail" id="calls">
<h3>calls</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ConcurrentMap.html" title="class or interface in java.util.concurrent" class="external-link">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-101">calls</a></span></div>
</section>
</li>
<li>
<section class="detail" id="callSender">
<h3>callSender</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="BlockingRpcConnection.CallSender.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcConnection.CallSender</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-103">callSender</a></span></div>
</section>
</li>
<li>
<section class="detail" id="closed">
<h3>closed</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-105">closed</a></span></div>
</section>
</li>
<li>
<section class="detail" id="connectionHeaderPreamble">
<h3>connectionHeaderPreamble</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-107">connectionHeaderPreamble</a></span></div>
</section>
</li>
<li>
<section class="detail" id="connectionHeaderWithLength">
<h3>connectionHeaderWithLength</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-109">connectionHeaderWithLength</a></span></div>
</section>
</li>
<li>
<section class="detail" id="waitingConnectionHeaderResponse">
<h3>waitingConnectionHeaderResponse</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-111">waitingConnectionHeaderResponse</a></span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.hbase.ipc.BlockingRpcClient,org.apache.hadoop.hbase.ipc.ConnectionId)">
<h3>BlockingRpcConnection</h3>
<div class="member-signature"><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-213">BlockingRpcConnection</a></span><wbr><span class="parameters">(<a href="BlockingRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">BlockingRpcClient</a>&nbsp;rpcClient,
<a href="ConnectionId.html" title="class in org.apache.hadoop.hbase.ipc">ConnectionId</a>&nbsp;remoteId)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="setupConnection()">
<h3>setupConnection</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-241">setupConnection</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="handleConnectionFailure(int,int,java.io.IOException)">
<h3>handleConnectionFailure</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-285">handleConnectionFailure</a></span><wbr><span class="parameters">(int&nbsp;curRetries,
int&nbsp;maxRetries,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;ioe)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Handle connection failures If the current number of retries is equal to the max number of
retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting
again. This Method is only called from inside setupIOstreams(), which is synchronized. Hence
the sleep is synchronized; the locks will be retained.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>curRetries</code> - current number of retries</dd>
<dd><code>maxRetries</code> - max number of retries allowed</dd>
<dd><code>ioe</code> - failure reason</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - if max number of retries is reached</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="waitForWork()">
<h3>waitForWork</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-312">waitForWork</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="run()">
<h3>run</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-337">run</a></span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html#run()" title="class or interface in java.lang" class="external-link">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="disposeSasl()">
<h3>disposeSasl</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-350">disposeSasl</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="setupSaslConnection(java.io.InputStream,java.io.OutputStream,java.lang.String)">
<h3>setupSaslConnection</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-357">setupSaslConnection</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;in2,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;out2,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverPrincipal)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="handleSaslConnectionFailure(int,int,java.lang.Exception,org.apache.hadoop.security.UserGroupInformation,java.lang.String)">
<h3>handleSaslConnectionFailure</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-383">handleSaslConnectionFailure</a></span><wbr><span class="parameters">(int&nbsp;currRetries,
int&nbsp;maxRetries,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a>&nbsp;ex,
org.apache.hadoop.security.UserGroupInformation&nbsp;user,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverPrincipal)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">If multiple clients with the same principal try to connect to the same server at the same time,
the server assumes a replay attack is in progress. This is a feature of kerberos. In order to
work around this, what is done is that the client backs off randomly and tries to initiate the
connection again. The other problem is to do with ticket expiry. To handle that, a relogin is
attempted.
<p>
The retry logic is governed by the <a href="../security/provider/SaslClientAuthenticationProvider.html#canRetry()"><code>SaslClientAuthenticationProvider.canRetry()</code></a> method.
Some providers have the ability to obtain new credentials and then re-attempt to authenticate
with HBase services. Other providers will continue to fail if they failed the first time -- for
those, we want to fail-fast.
</p></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getConnectionRegistry(java.io.InputStream,java.io.OutputStream,org.apache.hadoop.hbase.ipc.Call)">
<h3>getConnectionRegistry</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-433">getConnectionRegistry</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream,
<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;connectionRegistryCall)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStreams(java.io.InputStream,java.io.OutputStream)">
<h3>createStreams</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-443">createStreams</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream)</span></div>
</section>
</li>
<li>
<section class="detail" id="chooseServerPrincipal(java.io.InputStream,java.io.OutputStream)">
<h3>chooseServerPrincipal</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-449">chooseServerPrincipal</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a>&nbsp;inStream,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;outStream)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setupIOstreams(org.apache.hadoop.hbase.ipc.Call)">
<h3>setupIOstreams</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-493">setupIOstreams</a></span><wbr><span class="parameters">(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;connectionRegistryCall)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="writeConnectionHeaderPreamble(java.io.OutputStream)">
<h3>writeConnectionHeaderPreamble</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-599">writeConnectionHeaderPreamble</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&nbsp;out)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Write the RPC header: <code>&lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;</code></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="writeConnectionHeader()">
<h3>writeConnectionHeader</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-607">writeConnectionHeader</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Write the connection header.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="processResponseForConnectionHeader()">
<h3>processResponseForConnectionHeader</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-625">processResponseForConnectionHeader</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="negotiateCryptoAes(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta)">
<h3>negotiateCryptoAes</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-656">negotiateCryptoAes</a></span><wbr><span class="parameters">(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta&nbsp;cryptoCipherMeta)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="writeRequest(org.apache.hadoop.hbase.ipc.Call)">
<h3>writeRequest</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-669">writeRequest</a></span><wbr><span class="parameters">(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Initiates a call by sending the parameter to the remote server. Note: this is not called from
the Connection thread, but by other threads.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#readResponse()"><code>readResponse()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="readResponse()">
<h3>readResponse</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-718">readResponse</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="callTimeout(org.apache.hadoop.hbase.ipc.Call)">
<h3>callTimeout</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-741">callTimeout</a></span><wbr><span class="parameters">(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</span></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="RpcConnection.html#callTimeout(org.apache.hadoop.hbase.ipc.Call)">callTimeout</a></code>&nbsp;in class&nbsp;<code><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="closeSocket()">
<h3>closeSocket</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-748">closeSocket</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="closeConn(java.io.IOException)">
<h3>closeConn</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-758">closeConn</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;e)</span></div>
</section>
</li>
<li>
<section class="detail" id="shutdown()">
<h3>shutdown</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-775">shutdown</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="RpcConnection.html#shutdown()">RpcConnection</a></code></span></div>
<div class="block">Just close connection. Do not need to remove from connection pool.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="RpcConnection.html#shutdown()">shutdown</a></code>&nbsp;in class&nbsp;<code><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="cleanupConnection()">
<h3>cleanupConnection</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-784">cleanupConnection</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="RpcConnection.html#cleanupConnection()">RpcConnection</a></code></span></div>
<div class="block">Does the clean up work after the connection is removed from the connection pool</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="RpcConnection.html#cleanupConnection()">cleanupConnection</a></code>&nbsp;in class&nbsp;<code><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="sendRequest(org.apache.hadoop.hbase.ipc.Call,org.apache.hadoop.hbase.ipc.HBaseRpcController)">
<h3>sendRequest</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-789">sendRequest</a></span><wbr><span class="parameters">(<a href="Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call,
<a href="HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;pcrc)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="RpcConnection.html#sendRequest(org.apache.hadoop.hbase.ipc.Call,org.apache.hadoop.hbase.ipc.HBaseRpcController)">sendRequest</a></code>&nbsp;in class&nbsp;<code><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isActive()">
<h3>isActive</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line-825">isActive</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="RpcConnection.html#isActive()">RpcConnection</a></code></span></div>
<div class="block">Tell the idle connection sweeper whether we could be swept.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="RpcConnection.html#isActive()">isActive</a></code>&nbsp;in class&nbsp;<code><a href="RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>