<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Deprecated List</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Deprecated List";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#class">Deprecated Classes</a></li>
<li><a href="#method">Deprecated Methods</a></li>
</ul>
</div>
<div class="contentContainer"><a name="class">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Classes table, listing deprecated classes, and an explanation">
<caption><span>Deprecated Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Class and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/ColumnRangePredicate.html" title="class in org.apache.kudu.client">org.apache.kudu.client.ColumnRangePredicate</a>
<div class="block"><span class="deprecationComment">use the <a href="org/apache/kudu/client/KuduPredicate.html" title="class in org.apache.kudu.client"><code>KuduPredicate</code></a> class instead.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Methods table, listing deprecated methods, and an explanation">
<caption><span>Deprecated Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Method and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#addColumnRangePredicate-org.apache.kudu.client.ColumnRangePredicate-">org.apache.kudu.client.AbstractKuduScannerBuilder.addColumnRangePredicate(ColumnRangePredicate)</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#addPredicate-org.apache.kudu.client.KuduPredicate-"><code>AbstractKuduScannerBuilder.addPredicate(KuduPredicate)</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#addColumnRangePredicatesRaw-byte:A-">org.apache.kudu.client.AbstractKuduScannerBuilder.addColumnRangePredicatesRaw(byte[])</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#addPredicate-org.apache.kudu.client.KuduPredicate-"><code>AbstractKuduScannerBuilder.addPredicate(org.apache.kudu.client.KuduPredicate)</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduTable.html#asyncGetTabletsLocations-byte:A-byte:A-long-">org.apache.kudu.client.KuduTable.asyncGetTabletsLocations(byte[], byte[], long)</a>
<div class="block"><span class="deprecationComment">use the <a href="org/apache/kudu/client/KuduScanToken.html" title="class in org.apache.kudu.client"><code>KuduScanToken</code></a> API</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduTable.html#asyncGetTabletsLocations-long-">org.apache.kudu.client.KuduTable.asyncGetTabletsLocations(long)</a>
<div class="block"><span class="deprecationComment">use the <a href="org/apache/kudu/client/KuduScanToken.html" title="class in org.apache.kudu.client"><code>KuduScanToken</code></a> API</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AsyncKuduClient.AsyncKuduClientBuilder.html#bossCount-int-">org.apache.kudu.client.AsyncKuduClient.AsyncKuduClientBuilder.bossCount(int)</a>
<div class="block"><span class="deprecationComment">the bossExecutor is no longer used and will have no effect if provided</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduClient.KuduClientBuilder.html#bossCount-int-">org.apache.kudu.client.KuduClient.KuduClientBuilder.bossCount(int)</a>
<div class="block"><span class="deprecationComment">the bossExecutor is no longer used and will have no effect if provided</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AsyncKuduClient.AsyncKuduClientBuilder.html#defaultSocketReadTimeoutMs-long-">org.apache.kudu.client.AsyncKuduClient.AsyncKuduClientBuilder.defaultSocketReadTimeoutMs(long)</a>
<div class="block"><span class="deprecationComment">this option no longer has any effect</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduClient.KuduClientBuilder.html#defaultSocketReadTimeoutMs-long-">org.apache.kudu.client.KuduClient.KuduClientBuilder.defaultSocketReadTimeoutMs(long)</a>
<div class="block"><span class="deprecationComment">socket read timeouts are no longer used</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#exclusiveUpperBoundRaw-byte:A-">org.apache.kudu.client.AbstractKuduScannerBuilder.exclusiveUpperBoundRaw(byte[])</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#exclusiveUpperBound-org.apache.kudu.client.PartialRow-"><code>AbstractKuduScannerBuilder.exclusiveUpperBound(PartialRow)</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/Type.html#getDataType--">org.apache.kudu.Type.getDataType()</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/Type.html#getDataType-org.apache.kudu.ColumnTypeAttributes-"><code>getDataType(ColumnTypeAttributes)</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/Type.html#getDataType--">org.apache.kudu.Type.getDataType()</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/Type.html#getDataType-org.apache.kudu.ColumnTypeAttributes-"><code>getDataType(ColumnTypeAttributes)</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/AsyncKuduClient.html#getDefaultSocketReadTimeoutMs--">org.apache.kudu.client.AsyncKuduClient.getDefaultSocketReadTimeoutMs()</a>
<div class="block"><span class="deprecationComment">socket read timeouts are no longer used</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/LocatedTablet.html#getEndKey--">org.apache.kudu.client.LocatedTablet.getEndKey()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/RowError.html#getMessage--">org.apache.kudu.client.RowError.getMessage()</a>
<div class="block"><span class="deprecationComment">Please use getErrorStatus() instead. Will be removed in a future version.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/Type.html#getSize--">org.apache.kudu.Type.getSize()</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/Type.html#getSize-org.apache.kudu.ColumnTypeAttributes-"><code>getSize(ColumnTypeAttributes)</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/Type.html#getSize--">org.apache.kudu.Type.getSize()</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/Type.html#getSize-org.apache.kudu.ColumnTypeAttributes-"><code>getSize(ColumnTypeAttributes)</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/mapreduce/CommandLineParser.html#getSocketReadTimeoutMs--">org.apache.kudu.mapreduce.CommandLineParser.getSocketReadTimeoutMs()</a>
<div class="block"><span class="deprecationComment">socket read timeouts no longer have any effect</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/LocatedTablet.html#getStartKey--">org.apache.kudu.client.LocatedTablet.getStartKey()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/RowError.html#getStatus--">org.apache.kudu.client.RowError.getStatus()</a>
<div class="block"><span class="deprecationComment">Please use getErrorStatus() instead. Will be removed in a future version.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduTable.html#getTabletsLocations-byte:A-byte:A-long-">org.apache.kudu.client.KuduTable.getTabletsLocations(byte[], byte[], long)</a>
<div class="block"><span class="deprecationComment">use the <a href="org/apache/kudu/client/KuduScanToken.html" title="class in org.apache.kudu.client"><code>KuduScanToken</code></a> API</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduTable.html#getTabletsLocations-long-">org.apache.kudu.client.KuduTable.getTabletsLocations(long)</a>
<div class="block"><span class="deprecationComment">use the <a href="org/apache/kudu/client/KuduScanToken.html" title="class in org.apache.kudu.client"><code>KuduScanToken</code></a> API</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#lowerBoundRaw-byte:A-">org.apache.kudu.client.AbstractKuduScannerBuilder.lowerBoundRaw(byte[])</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/kudu/client/AbstractKuduScannerBuilder.html#lowerBound-org.apache.kudu.client.PartialRow-"><code>AbstractKuduScannerBuilder.lowerBound(PartialRow)</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AsyncKuduClient.AsyncKuduClientBuilder.html#nioExecutors-java.util.concurrent.Executor-java.util.concurrent.Executor-">org.apache.kudu.client.AsyncKuduClient.AsyncKuduClientBuilder.nioExecutors(Executor, Executor)</a>
<div class="block"><span class="deprecationComment">the bossExecutor is no longer used and will have no effect if provided</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduClient.KuduClientBuilder.html#nioExecutors-java.util.concurrent.Executor-java.util.concurrent.Executor-">org.apache.kudu.client.KuduClient.KuduClientBuilder.nioExecutors(Executor, Executor)</a>
<div class="block"><span class="deprecationComment">the bossExecutor is no longer used and will have no effect if provided</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/AsyncKuduSession.html#setMutationBufferLowWatermark-float-">org.apache.kudu.client.AsyncKuduSession.setMutationBufferLowWatermark(float)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/kudu/client/KuduSession.html#setMutationBufferLowWatermark-float-">org.apache.kudu.client.KuduSession.setMutationBufferLowWatermark(float)</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/kudu/client/SessionConfiguration.html#setMutationBufferLowWatermark-float-">org.apache.kudu.client.SessionConfiguration.setMutationBufferLowWatermark(float)</a>
<div class="block"><span class="deprecationComment">The low watermark no longer has any effect.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
