blob: 97f626f5b3e5425152f2e9697fd6529e0bc02668 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.7.0/cppdoc/namespaceignite_1_1transactions.html" />
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>&nbsp; Apache Ignite C++: ignite::transactions Namespace 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>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></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 style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">&nbsp; Apache Ignite C++
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceignite.html">ignite</a></li><li class="navelem"><a class="el" href="namespaceignite_1_1transactions.html">transactions</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">ignite::transactions Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Ignite Transaction API.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 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="classignite_1_1transactions_1_1Transaction.html">Transaction</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ignite cache transaction. <a href="classignite_1_1transactions_1_1Transaction.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classignite_1_1transactions_1_1TransactionMetrics.html">TransactionMetrics</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transaction metrics, shared across all caches. <a href="classignite_1_1transactions_1_1TransactionMetrics.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classignite_1_1transactions_1_1Transactions.html">Transactions</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transactions facade. <a href="classignite_1_1transactions_1_1Transactions.html#details">More...</a><br /></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 name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:aee8b376e2894e92648003300e3e1641f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641f">TransactionConcurrency</a> { <a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641fae9c0bb3d9495a21defacb664c764070a">IGNITE_TX_CONCURRENCY_OPTIMISTIC</a> = 0,
<a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641fafc663b75e35fa8d20b7f7be23d332b27">IGNITE_TX_CONCURRENCY_PESSIMISTIC</a> = 1
}</td></tr>
<tr class="memdesc:aee8b376e2894e92648003300e3e1641f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transaction concurrency control model. <a href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641f">More...</a><br /></td></tr>
<tr class="separator:aee8b376e2894e92648003300e3e1641f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a5ac5160b34a7b28ea4c2b673be3771"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771">TransactionIsolation</a> { <a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a336c552ffe3ca5cb3a3f97ac9416774d">IGNITE_TX_ISOLATION_READ_COMMITTED</a> = 0,
<a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a05e0484d319b7aa88020c39f99c0c42b">IGNITE_TX_ISOLATION_REPEATABLE_READ</a> = 1,
<a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a7886a76454c8cfe97629505ef58bca87">IGNITE_TX_ISOLATION_SERIALIZABLE</a> = 2
}</td></tr>
<tr class="memdesc:a8a5ac5160b34a7b28ea4c2b673be3771"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines different cache transaction isolation levels. <a href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771">More...</a><br /></td></tr>
<tr class="separator:a8a5ac5160b34a7b28ea4c2b673be3771"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abddb0c4c73921b0324c46a5df8a20c42"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42">TransactionState</a> { <br />
&#160;&#160;<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42a5dea575dcf83c1b332d26746d13b3510">IGNITE_TX_STATE_ACTIVE</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42a0ff0d65f52defc22ef7d107cacf6dd81">IGNITE_TX_STATE_PREPARING</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42a80100cff3f3484c28123f38334a1e2b5">IGNITE_TX_STATE_PREPARED</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42a50b6217956af3820b96a603ddb05258f">IGNITE_TX_STATE_MARKED_ROLLBACK</a>,
<br />
&#160;&#160;<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42abcfba02905670e9d29641f7439d754cc">IGNITE_TX_STATE_COMMITTING</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42ace4bb3ceafd7bbdb141b9201bd6a8918">IGNITE_TX_STATE_COMMITTED</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42ae0b092e0b96e25855fd20c4aaca293a4">IGNITE_TX_STATE_ROLLING_BACK</a>,
<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42ad4b2fb52f0f0e32a2ee2374f291b0fe2">IGNITE_TX_STATE_ROLLED_BACK</a>,
<br />
&#160;&#160;<a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42a5522ef76180284fd4da5344e07b72fee">IGNITE_TX_STATE_UNKNOWN</a>
<br />
}</td></tr>
<tr class="memdesc:abddb0c4c73921b0324c46a5df8a20c42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cache transaction state. <a href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42">More...</a><br /></td></tr>
<tr class="separator:abddb0c4c73921b0324c46a5df8a20c42"><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>Ignite Transaction API. </p>
</div><h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="aee8b376e2894e92648003300e3e1641f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641f">ignite::transactions::TransactionConcurrency</a></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classignite_1_1transactions_1_1Transaction.html" title="Ignite cache transaction. ">Transaction</a> concurrency control model. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="aee8b376e2894e92648003300e3e1641fae9c0bb3d9495a21defacb664c764070a"></a>IGNITE_TX_CONCURRENCY_OPTIMISTIC&#160;</td><td class="fielddoc">
<p>Optimistic concurrency model. </p>
<p>In this mode all cache operations are not distributed to other nodes until <a class="el" href="classignite_1_1transactions_1_1Transaction.html#aa7536d728f02cfeb79266a1c1b111c37" title="Commit the transaction. ">Transaction::Commit()</a> is called. In this mode one <code>'PREPARE'</code> message will be sent to participating cache nodes to start acquiring per-transaction locks, and once all nodes reply <code>'OK'</code>, a one-way <code>'COMMIT'</code> message is sent without waiting for reply.</p>
<p>Note that in this mode, optimistic failures are only possible in conjunction with <a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a7886a76454c8cfe97629505ef58bca87" title="Serializable isolation level. ">IGNITE_TX_ISOLATION_SERIALIZABLE</a> isolation level. In all other cases, optimistic transactions will never fail optimistically and will always be identically ordered on all participating grid nodes. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aee8b376e2894e92648003300e3e1641fafc663b75e35fa8d20b7f7be23d332b27"></a>IGNITE_TX_CONCURRENCY_PESSIMISTIC&#160;</td><td class="fielddoc">
<p>Pessimistic concurrency model. </p>
<p>In this mode a lock is acquired on all cache operations with exception of read operations in <a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a336c552ffe3ca5cb3a3f97ac9416774d" title="Read committed isolation level. ">IGNITE_TX_ISOLATION_READ_COMMITTED</a> mode. All optional filters passed into cache operations will be evaluated after successful lock acquisition. Whenever <a class="el" href="classignite_1_1transactions_1_1Transaction.html#aa7536d728f02cfeb79266a1c1b111c37" title="Commit the transaction. ">Transaction::Commit()</a> is called, a single one-way <code>'COMMIT'</code> message is sent to participating cache nodes without waiting for reply. Note that there is no reason for distributed <code>'PREPARE'</code> step, as all locks have been already acquired. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="a8a5ac5160b34a7b28ea4c2b673be3771"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771">ignite::transactions::TransactionIsolation</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines different cache transaction isolation levels. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a8a5ac5160b34a7b28ea4c2b673be3771a336c552ffe3ca5cb3a3f97ac9416774d"></a>IGNITE_TX_ISOLATION_READ_COMMITTED&#160;</td><td class="fielddoc">
<p>Read committed isolation level. </p>
<p>This isolation level means that always a committed value will be provided for read operations. With this isolation level values are always read from cache global memory or persistent store every time a value is accessed. In other words, if the same key is accessed more than once within the same transaction, it may have different value every time since global cache memory may be updated concurrently by other threads. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a8a5ac5160b34a7b28ea4c2b673be3771a05e0484d319b7aa88020c39f99c0c42b"></a>IGNITE_TX_ISOLATION_REPEATABLE_READ&#160;</td><td class="fielddoc">
<p>Repeatable read isolation level. </p>
<p>This isolation level means that if a value was read once within transaction, then all consecutive reads will provide the same in-transaction value. With this isolation level accessed values are stored within in-transaction memory, so consecutive access to the same key within the same transaction will always return the value that was previously read or updated within this transaction. If concurrency is <a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641fafc663b75e35fa8d20b7f7be23d332b27" title="Pessimistic concurrency model. ">IGNITE_TX_CONCURRENCY_PESSIMISTIC</a>, then a lock on the key will be acquired prior to accessing the value. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a8a5ac5160b34a7b28ea4c2b673be3771a7886a76454c8cfe97629505ef58bca87"></a>IGNITE_TX_ISOLATION_SERIALIZABLE&#160;</td><td class="fielddoc">
<p>Serializable isolation level. </p>
<p>This isolation level means that all transactions occur in a completely isolated fashion, as if all transactions in the system had executed serially, one after the other. Read access with this level happens the same way as with <a class="el" href="namespaceignite_1_1transactions.html#a8a5ac5160b34a7b28ea4c2b673be3771a05e0484d319b7aa88020c39f99c0c42b" title="Repeatable read isolation level. ">IGNITE_TX_ISOLATION_REPEATABLE_READ</a> level. However, in <a class="el" href="namespaceignite_1_1transactions.html#aee8b376e2894e92648003300e3e1641fae9c0bb3d9495a21defacb664c764070a" title="Optimistic concurrency model. ">IGNITE_TX_CONCURRENCY_OPTIMISTIC</a> mode, if some transactions cannot be serially isolated from each other, then one winner will be picked and the other transactions in conflict will result in <a class="el" href="classignite_1_1IgniteError.html" title="Ignite error information. ">IgniteError</a> being thrown. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespaceignite_1_1transactions.html#abddb0c4c73921b0324c46a5df8a20c42">ignite::transactions::TransactionState</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Cache transaction state. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42a5dea575dcf83c1b332d26746d13b3510"></a>IGNITE_TX_STATE_ACTIVE&#160;</td><td class="fielddoc">
<p>Transaction started. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42a0ff0d65f52defc22ef7d107cacf6dd81"></a>IGNITE_TX_STATE_PREPARING&#160;</td><td class="fielddoc">
<p>Transaction validating. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42a80100cff3f3484c28123f38334a1e2b5"></a>IGNITE_TX_STATE_PREPARED&#160;</td><td class="fielddoc">
<p>Transaction validation succeeded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42a50b6217956af3820b96a603ddb05258f"></a>IGNITE_TX_STATE_MARKED_ROLLBACK&#160;</td><td class="fielddoc">
<p>Transaction is marked for rollback. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42abcfba02905670e9d29641f7439d754cc"></a>IGNITE_TX_STATE_COMMITTING&#160;</td><td class="fielddoc">
<p>Transaction commit started (validating finished). </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42ace4bb3ceafd7bbdb141b9201bd6a8918"></a>IGNITE_TX_STATE_COMMITTED&#160;</td><td class="fielddoc">
<p>Transaction commit succeeded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42ae0b092e0b96e25855fd20c4aaca293a4"></a>IGNITE_TX_STATE_ROLLING_BACK&#160;</td><td class="fielddoc">
<p>Transaction rollback started (validation failed). </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42ad4b2fb52f0f0e32a2ee2374f291b0fe2"></a>IGNITE_TX_STATE_ROLLED_BACK&#160;</td><td class="fielddoc">
<p>Transaction rollback succeeded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="abddb0c4c73921b0324c46a5df8a20c42a5522ef76180284fd4da5344e07b72fee"></a>IGNITE_TX_STATE_UNKNOWN&#160;</td><td class="fielddoc">
<p>Transaction rollback failed or is otherwise unknown state. </p>
</td></tr>
</table>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Aug 1 2016 19:40:29 for &nbsp; Apache Ignite C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>