blob: 7420bad6904e53451e8903abb879f23550b6ddfd [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: kudu::client::KuduTransaction Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Kudu C++ client API
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>kudu</b></li><li class="navelem"><b>client</b></li><li class="navelem"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classkudu_1_1client_1_1KuduTransaction-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">kudu::client::KuduTransaction Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="client_8h_source.html">client.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for kudu::client::KuduTransaction:</div>
<div class="dyncontent">
<div class="center">
<img src="classkudu_1_1client_1_1KuduTransaction.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad79babbbd8bd296741fad2ed0adce55a" id="r_ad79babbbd8bd296741fad2ed0adce55a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#ad79babbbd8bd296741fad2ed0adce55a">CreateSession</a> (sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduSession.html">KuduSession</a> &gt; *session) WARN_UNUSED_RESULT</td></tr>
<tr class="separator:ad79babbbd8bd296741fad2ed0adce55a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf0b693b1ff9a44399bea3ed1f22f495" id="r_aaf0b693b1ff9a44399bea3ed1f22f495"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#aaf0b693b1ff9a44399bea3ed1f22f495">Commit</a> () WARN_UNUSED_RESULT</td></tr>
<tr class="separator:aaf0b693b1ff9a44399bea3ed1f22f495"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4347410b4f7e6a70ebc2f66b06c569ce" id="r_a4347410b4f7e6a70ebc2f66b06c569ce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#a4347410b4f7e6a70ebc2f66b06c569ce">StartCommit</a> () WARN_UNUSED_RESULT</td></tr>
<tr class="separator:a4347410b4f7e6a70ebc2f66b06c569ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69b6da1caffdba1f0610f5b8ef00e4ee" id="r_a69b6da1caffdba1f0610f5b8ef00e4ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#a69b6da1caffdba1f0610f5b8ef00e4ee">IsCommitComplete</a> (bool *is_complete, <a class="el" href="classkudu_1_1Status.html">Status</a> *completion_status) WARN_UNUSED_RESULT</td></tr>
<tr class="separator:a69b6da1caffdba1f0610f5b8ef00e4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b5c532b44f84beabe7ae7ca46889f8" id="r_a68b5c532b44f84beabe7ae7ca46889f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#a68b5c532b44f84beabe7ae7ca46889f8">Rollback</a> () WARN_UNUSED_RESULT</td></tr>
<tr class="separator:a68b5c532b44f84beabe7ae7ca46889f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad55ec331c2e0471dca2e73b30750b5f5" id="r_ad55ec331c2e0471dca2e73b30750b5f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#ad55ec331c2e0471dca2e73b30750b5f5">Serialize</a> (std::string *serialized_txn, const <a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a> &amp;options=<a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a>()) const WARN_UNUSED_RESULT</td></tr>
<tr class="separator:ad55ec331c2e0471dca2e73b30750b5f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:acacb5462953dcbd8248241759ee0ba52" id="r_acacb5462953dcbd8248241759ee0ba52"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#acacb5462953dcbd8248241759ee0ba52">Deserialize</a> (const sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduClient.html">KuduClient</a> &gt; &amp;client, const std::string &amp;serialized_txn, sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> &gt; *txn) WARN_UNUSED_RESULT</td></tr>
<tr class="separator:acacb5462953dcbd8248241759ee0ba52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A class representing a multi-row transaction in Kudu. Once created using <code>KuduClient::BeginTransaction()</code> or <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#acacb5462953dcbd8248241759ee0ba52">KuduTransaction::Deserialize</a></code> method, <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> instance can be used to commit or rollback the underlying multi-row transaction and create a transactional session.</p>
<dl class="section note"><dt>Note</dt><dd>The <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> should be kept in scope to maintain automatic keep-alive heartbeating for the corresponding transaction. Once this object goes out of scope, the heartbeating stops and the transaction may automatically be aborted soon if no other clients do the heartbeating.</dd>
<dd>
There isn't any automation to rollback or commit the underlying transaction upon destruction of an instance of this class.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>The set of methods in this class, their behavior, and signatures are experimental and may change or disappear in future. The class itself is experimental and may change its lineage, API status, or disappear in future. </dd></dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aaf0b693b1ff9a44399bea3ed1f22f495" name="aaf0b693b1ff9a44399bea3ed1f22f495"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf0b693b1ff9a44399bea3ed1f22f495">&#9670;&#160;</a></span>Commit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::Commit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Commit the transaction.</p>
<p>This method automatically flushes all transactional sessions created off this transaction handle via <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#ad79babbbd8bd296741fad2ed0adce55a">KuduTransaction::CreateSession()</a></code>, initiates committing the transaction, and then waits for the commit phase to finalize. The flushing of all the derivative transactional sessions helps avoiding unintentional data loss when those sessions are not flushed explicitly before committing. No new operations should be pushed into the derivative transactional sessions created off this handle once the method has been called.</p>
<dl class="section return"><dt>Returns</dt><dd>Returns <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code> if all the stages of the transaction's commit sequence were successful, i.e. the status of various pre-commit work, the status of starting the commit phase, the status of the commit phase itself once it's completed. Returns non-OK status of the very first failed stage of the transaction's commit sequence. </dd></dl>
</div>
</div>
<a id="ad79babbbd8bd296741fad2ed0adce55a" name="ad79babbbd8bd296741fad2ed0adce55a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad79babbbd8bd296741fad2ed0adce55a">&#9670;&#160;</a></span>CreateSession()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::CreateSession </td>
<td>(</td>
<td class="paramtype">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduSession.html">KuduSession</a> &gt; *&#160;</td>
<td class="paramname"><em>session</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new <code><a class="el" href="classkudu_1_1client_1_1KuduSession.html" title="Representation of a Kudu client session.">KuduSession</a></code> with "transactional" semantics.</p>
<p>Every write operation performed in the context of the newly created "transactional" session becomes a part of the corresponding multi-row transaction represented by an instance of this class. Multiple sessions can be created in the context of the same multi-row distributed transaction by the same or different Kudu clients residing on a single or multiple nodes.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">session</td><td>The result session object. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="acacb5462953dcbd8248241759ee0ba52" name="acacb5462953dcbd8248241759ee0ba52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acacb5462953dcbd8248241759ee0ba52">&#9670;&#160;</a></span>Deserialize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::Deserialize </td>
<td>(</td>
<td class="paramtype">const sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduClient.html">KuduClient</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>client</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>serialized_txn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> &gt; *&#160;</td>
<td class="paramname"><em>txn</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Re-create <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> object given its serialized representation.</p>
<p>This method doesn't perform any RPC under the hood. The newly created object automatically does or does not send keep-alive messages depending on the <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html#a8b492133e20407e1242a229ecfb44e7d">KuduTransaction::SerializationOptions::enable_keepalive()</a></code> setting when the original <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> object was serialized using <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#ad55ec331c2e0471dca2e73b30750b5f5">KuduTransaction::Serialize()</a></code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">client</td><td>Client instance to bound the result object to. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">serialized_txn</td><td>String containing serialized representation of <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> object. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">txn</td><td>The result <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> object, wrapped into a smart pointer. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a69b6da1caffdba1f0610f5b8ef00e4ee" name="a69b6da1caffdba1f0610f5b8ef00e4ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69b6da1caffdba1f0610f5b8ef00e4ee">&#9670;&#160;</a></span>IsCommitComplete()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::IsCommitComplete </td>
<td>(</td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>is_complete</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classkudu_1_1Status.html">Status</a> *&#160;</td>
<td class="paramname"><em>completion_status</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether the commit has completed i.e. no longer in progress of finalizing.</p>
<p>This method checks for the transaction's commit status, setting the <code>is_complete</code> out parameter to <code>true</code> and the <code>completion_status</code> parameter to the finalization status of the commit process, assuming the method returning <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code>. The happy case is when the method returns <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code>, <code>is_complete</code> is set to <code>true</code> and <code>completion_status</code> is set to <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code> &ndash; that means the transaction has successfully finalized its commit phase.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">is_complete</td><td>Whether the process of finalizing the commit of the transaction has ended, including both success and failure outcomes. In other words, the value of this out parameter indicates whether the finalization of the transaction's commit phase is no longer in progress: it already succeeded or failed by the time of processing the request. This parameter is assigned a meaningful value iff the method returns <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code>. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">completion_status</td><td>The status of finalization of the transaction's commit phase: <ul>
<li><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a> if the commit phase successfully finalized </li>
<li>non-OK status if the commit phase failed to finalize This parameter is assigned a meaningful value iff the method returns <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code>. </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The result status of querying the transaction's commit status. Both <code>is_complete</code> and <code>completion_status</code> are set iff the method returns <code><a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a></code>. </dd></dl>
</div>
</div>
<a id="a68b5c532b44f84beabe7ae7ca46889f8" name="a68b5c532b44f84beabe7ae7ca46889f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68b5c532b44f84beabe7ae7ca46889f8">&#9670;&#160;</a></span>Rollback()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::Rollback </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Rollback/abort the transaction.</p>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="ad55ec331c2e0471dca2e73b30750b5f5" name="ad55ec331c2e0471dca2e73b30750b5f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad55ec331c2e0471dca2e73b30750b5f5">&#9670;&#160;</a></span>Serialize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::Serialize </td>
<td>(</td>
<td class="paramtype">std::string *&#160;</td>
<td class="paramname"><em>serialized_txn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a> &amp;&#160;</td>
<td class="paramname"><em>options</em> = <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Export the information on this transaction in a serialized form.</p>
<p>The serialized information on a Kudu transaction can be passed among different Kudu clients running at multiple nodes, so those separate Kudu clients can perform operations to be a part of the same distributed transaction. The resulting string is referred as "transaction token" and can be deserialized into a transaction handle (i.e. an object of the <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> class) via the <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#acacb5462953dcbd8248241759ee0ba52">KuduTransaction::Deserialize()</a></code> method.</p>
<p>This method doesn't perform any RPC under the hood. The behavior of this method is controlled by <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a></code> set for this transaction handle.</p>
<dl class="section note"><dt>Note</dt><dd>The representation of the data in the serialized form (i.e. the format of a Kudu transaction token) is an implementation detail, not a part of the public API.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">serialized_txn</td><td>Result string to output the serialized transaction information. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">options</td><td>Options to use when serializing the handle (optional). If omitted, the default serialization parameters are used &ndash; the same as it would be for a default-constructed instance of <a class="el" href="classkudu_1_1client_1_1KuduTransaction_1_1SerializationOptions.html">SerializationOptions</a> used for this parameter. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a4347410b4f7e6a70ebc2f66b06c569ce" name="a4347410b4f7e6a70ebc2f66b06c569ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4347410b4f7e6a70ebc2f66b06c569ce">&#9670;&#160;</a></span>StartCommit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduTransaction::StartCommit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start committing this transaction, but don't wait for the commit phase to finalize.</p>
<p>This method initiates the commit phase for this transaction, not waiting for the commit phase to finalize. It requires all the transactional sessions created off this handle via <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#ad79babbbd8bd296741fad2ed0adce55a">KuduTransaction::CreateSession()</a></code> to be flushed already. No new operations should be pushed into the derivative transactional sessions created off this handle once the method has been called. To check for the transaction's commit status, use the <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#a69b6da1caffdba1f0610f5b8ef00e4ee">KuduTransaction::IsCommitComplete()</a></code> method.</p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkudu_1_1Status.html" title="A representation of an operation&#39;s outcome.">Status</a> of starting the commit phase for this transaction if all the transactional sessions created off this handle are flushed, otherwise returns <code><a class="el" href="classkudu_1_1Status.html#a65232f9f7de16f12db13e6c55137c48b">Status::IllegalState()</a></code>. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/kudu/client/<a class="el" href="client_8h_source.html">client.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>Generated for Kudu version 1.17.0 on Mon Sep 4 2023 19:49:30 by Doxygen 1.9.8</small>
<br>
<small>Copyright © 2023 The Apache Software Foundation.</small>
</address>
</body>
</html>