blob: 1da05e91e523dc04e7cf4a2b9266e2b258a34abf [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.8.1/dotnetdoc/api/Apache.Ignite.Core.Transactions.ITransaction.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Interface ITransaction
| Apache Ignite.NET </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Interface ITransaction
| Apache Ignite.NET ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../images/favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
<meta property="docfx:rel" content="../">
<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 data-spy="scroll" data-target="#affix">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items"></div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Transactions.ITransaction">
<h1 id="Apache_Ignite_Core_Transactions_ITransaction" data-uid="Apache.Ignite.Core.Transactions.ITransaction" class="text-break">Interface ITransaction
</h1>
<div class="markdown level0 summary"><p>Grid cache transaction.
<p>
Cache transactions support the following isolation levels:
<ul><li><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_ReadCommitted">ReadCommitted</a> 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.</li><li><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_RepeatableRead">RepeatableRead</a> 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="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html#Apache_Ignite_Core_Transactions_TransactionConcurrency_Pessimistic">Pessimistic</a>, then a lock on the key will be
acquired prior to accessing the value.</li><li><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_Serializable">Serializable</a> 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="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_RepeatableRead">RepeatableRead</a> level. However, in
<a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html#Apache_Ignite_Core_Transactions_TransactionConcurrency_Optimistic">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 <code>TransactionOptimisticException</code> being thrown on Java side.</li></ul>
Cache transactions support the following concurrency models:
<ul><li><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html#Apache_Ignite_Core_Transactions_TransactionConcurrency_Optimistic">Optimistic</a> - in this mode all cache
operations
are not distributed to other nodes until <a class="xref" href="Apache.Ignite.Core.Transactions.ITransaction.html#Apache_Ignite_Core_Transactions_ITransaction_Commit">Commit()</a>.
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> (i.e. <code>Phase 1</code> completes successfully), a one-way <code>COMMIT</code> message is sent
without waiting for reply. If it is necessary to know whenever remote nodes have committed as well,
synchronous commit or synchronous rollback should be enabled via
<code>CacheConfiguration.setWriteSynchronizationMode</code>.
<p>
Note that in this mode, optimistic failures are only possible in conjunction with
<a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_Serializable">Serializable</a> isolation level. In all other cases,
optimistic transactions will never fail optimistically and will always be identically ordered on all
participating Ignite nodes.</li><li><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html#Apache_Ignite_Core_Transactions_TransactionConcurrency_Pessimistic">Pessimistic</a> - in this mode a lock is
acquired on all cache operations with exception of read operations in
<a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html#Apache_Ignite_Core_Transactions_TransactionIsolation_ReadCommitted">ReadCommitted</a> mode. All optional filters passed
into cache operations will be evaluated after successful lock acquisition. Whenever
<a class="xref" href="Apache.Ignite.Core.Transactions.ITransaction.html#Apache_Ignite_Core_Transactions_ITransaction_Commit">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. Just like with
optimistic mode, it is possible to configure synchronous commit or rollback and wait till
transaction commits on all participating remote nodes.</li></ul>
<p>
In addition to standard <code>CacheAtomicityMode.TRANSACTIONAL</code> behavior, Ignite also supports
a lighter <code>CacheAtomicityMode.ATOMIC</code> mode as well. In this mode distributed transactions
and distributed locking are not supported. Disabling transactions and locking allows to achieve much higher
performance and throughput ratios. It is recommended that <code>CacheAtomicityMode.TRANSACTIONAL</code> mode
is used whenever full <code>ACID</code>-compliant transactions are not needed.
<example>
You can use cache transactions as follows:<p>
<pre><code>ICacheTx tx = cache.TxStart();
try
{
int v1 = cache&lt;string, int>.Get(&quot;k1&quot;);
// Check if v1 satisfies some condition before doing a put.
if (v1 > 0)
cache.Put&lt;string, int>(&quot;k1&quot;, 2);
cache.Removex(&quot;k2);
// Commit the transaction.
tx.Commit();
}
finally
{
tx.Dispose();
}</code></pre>
<p></example></p>
</div>
<div class="markdown level0 conceptual"></div>
<div class="inheritedMembers">
<h5>Inherited Members</h5>
<div>
<span class="xref">System.IDisposable.Dispose()</span>
</div>
</div>
<h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Transactions.html">Apache.Ignite.Core.Transactions</a></h6>
<h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
<h5 id="Apache_Ignite_Core_Transactions_ITransaction_syntax">Syntax</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface ITransaction : IDisposable</code></pre>
</div>
<h3 id="properties">Properties
</h3>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Concurrency_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Concurrency*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Concurrency" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Concurrency">Concurrency</h4>
<div class="markdown level1 summary"><p>Transaction concurrency mode.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TransactionConcurrency Concurrency { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html">TransactionConcurrency</a></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Isolation_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Isolation*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Isolation" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Isolation">Isolation</h4>
<div class="markdown level1 summary"><p>Transaction isolation level.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TransactionIsolation Isolation { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html">TransactionIsolation</a></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_IsRollbackOnly_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.IsRollbackOnly*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_IsRollbackOnly" data-uid="Apache.Ignite.Core.Transactions.ITransaction.IsRollbackOnly">IsRollbackOnly</h4>
<div class="markdown level1 summary"><p>Gets a value indicating whether this transaction was marked as rollback-only.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool IsRollbackOnly { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Boolean</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Label_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Label*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Label" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Label">Label</h4>
<div class="markdown level1 summary"><p>Label of current transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string Label { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_NodeId_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.NodeId*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_NodeId" data-uid="Apache.Ignite.Core.Transactions.ITransaction.NodeId">NodeId</h4>
<div class="markdown level1 summary"><p>ID of the node on which this transaction started.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Guid NodeId { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Guid</span></td>
<td><p>Originating node ID.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_StartTime_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.StartTime*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_StartTime" data-uid="Apache.Ignite.Core.Transactions.ITransaction.StartTime">StartTime</h4>
<div class="markdown level1 summary"><p>Start time of this transaction on this node.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">DateTime StartTime { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.DateTime</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_State_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.State*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_State" data-uid="Apache.Ignite.Core.Transactions.ITransaction.State">State</h4>
<div class="markdown level1 summary"><p>Current transaction state.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TransactionState State { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionState.html">TransactionState</a></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_ThreadId_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.ThreadId*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_ThreadId" data-uid="Apache.Ignite.Core.Transactions.ITransaction.ThreadId">ThreadId</h4>
<div class="markdown level1 summary"><p>ID of the thread in which this transaction started.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">long ThreadId { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Int64</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Timeout_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Timeout*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Timeout" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Timeout">Timeout</h4>
<div class="markdown level1 summary"><p>Timeout for this transaction. If transaction times
out prior to it&apos;s completion, an exception will be thrown.
<span class="xref">System.TimeSpan.Zero</span> for infinite timeout.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TimeSpan Timeout { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.TimeSpan</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods
</h3>
<a id="Apache_Ignite_Core_Transactions_ITransaction_AddMeta_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.AddMeta*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_AddMeta__1_System_String___0_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.AddMeta``1(System.String,``0)">AddMeta&lt;TV&gt;(String, TV)</h4>
<div class="markdown level1 summary"><p>Adds a new metadata.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">void AddMeta&lt;TV&gt;(string name, TV val)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">name</span></td>
<td><p>Metadata name.</p>
</td>
</tr>
<tr>
<td><span class="xref">TV</span></td>
<td><span class="parametername">val</span></td>
<td><p>Metadata value.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="parametername">TV</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Commit_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Commit*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Commit" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Commit">Commit()</h4>
<div class="markdown level1 summary"><p>Commits this transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">void Commit()</code></pre>
</div>
<a id="Apache_Ignite_Core_Transactions_ITransaction_CommitAsync_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.CommitAsync*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_CommitAsync" data-uid="Apache.Ignite.Core.Transactions.ITransaction.CommitAsync">CommitAsync()</h4>
<div class="markdown level1 summary"><p>Commits this transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Task CommitAsync()</code></pre>
</div>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Threading.Tasks.Task</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Meta_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Meta*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Meta__1_System_String_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Meta``1(System.String)">Meta&lt;TV&gt;(String)</h4>
<div class="markdown level1 summary"><p>Gets metadata by name.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TV Meta&lt;TV&gt;(string name)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">name</span></td>
<td><p>Metadata name.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">TV</span></td>
<td><p>Metadata value.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="parametername">TV</span></td>
<td></td>
</tr>
</tbody>
</table>
<h5 class="exceptions">Exceptions</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.KeyNotFoundException</span></td>
<td><p>If metadata key was not found.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_RemoveMeta_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.RemoveMeta*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_RemoveMeta__1_System_String_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.RemoveMeta``1(System.String)">RemoveMeta&lt;TV&gt;(String)</h4>
<div class="markdown level1 summary"><p>Removes metadata by name.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">TV RemoveMeta&lt;TV&gt;(string name)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.String</span></td>
<td><span class="parametername">name</span></td>
<td><p>Metadata name.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">TV</span></td>
<td><p>Value of removed metadata or default value for <code>V</code> type.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="parametername">TV</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_Rollback_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Rollback*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_Rollback" data-uid="Apache.Ignite.Core.Transactions.ITransaction.Rollback">Rollback()</h4>
<div class="markdown level1 summary"><p>Rolls back this transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">void Rollback()</code></pre>
</div>
<a id="Apache_Ignite_Core_Transactions_ITransaction_RollbackAsync_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.RollbackAsync*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_RollbackAsync" data-uid="Apache.Ignite.Core.Transactions.ITransaction.RollbackAsync">RollbackAsync()</h4>
<div class="markdown level1 summary"><p>Rolls back this transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Task RollbackAsync()</code></pre>
</div>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Threading.Tasks.Task</span></td>
<td></td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Transactions_ITransaction_SetRollbackonly_" data-uid="Apache.Ignite.Core.Transactions.ITransaction.SetRollbackonly*"></a>
<h4 id="Apache_Ignite_Core_Transactions_ITransaction_SetRollbackonly" data-uid="Apache.Ignite.Core.Transactions.ITransaction.SetRollbackonly">SetRollbackonly()</h4>
<div class="markdown level1 summary"><p>Modify the transaction associated with the current thread such that the
only possible outcome of the transaction is to roll back the transaction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool SetRollbackonly()</code></pre>
</div>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Boolean</span></td>
<td><p>True if rollback-only flag was set as a result of this operation,
false if it was already set prior to this call or could not be set
because transaction is already finishing up committing or rolling back.</p>
</td>
</tr>
</tbody>
</table>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
© 2015 - 2019 The Apache Software Foundation
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>