cassandra-server
Version:
A thin Javascript wrapper around Apache Cassandra to provide out of the box server support
371 lines (369 loc) • 14.9 kB
HTML
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_67) on Sun Sep 07 15:29:30 CEST 2014 -->
<title>OpOrder.Barrier (apache-cassandra API)</title>
<meta name="date" content="2014-09-07">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="OpOrder.Barrier (apache-cassandra API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/OpOrder.Barrier.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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html" target="_top">Frames</a></li>
<li><a href="OpOrder.Barrier.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All 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>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li><a href="#constructor_summary">Constr</a> | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li><a href="#constructor_detail">Constr</a> | </li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.cassandra.utils.concurrent</div>
<h2 title="Class OpOrder.Barrier" class="title">Class OpOrder.Barrier</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.cassandra.utils.concurrent.OpOrder.Barrier</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.html" title="class in org.apache.cassandra.utils.concurrent">OpOrder</a></dd>
</dl>
<hr>
<br>
<pre>public final class <span class="strong">OpOrder.Barrier</span>
extends java.lang.Object</pre>
<div class="block">This class represents a synchronisation point providing ordering guarantees on operations started
against the enclosing OpOrder. When issue() is called upon it (may only happen once per Barrier), the
Barrier atomically partitions new operations from those already running (by expiring the current Group),
and activates its isAfter() method
which indicates if an operation was started before or after this partition. It offers methods to
determine, or block until, all prior operations have finished, and a means to indicate to those operations
that they are blocking forward progress. See <a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.html" title="class in org.apache.cassandra.utils.concurrent"><code>OpOrder</code></a> for idiomatic usage.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#OpOrder.Barrier()">OpOrder.Barrier</a></strong>()</code> </td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd"> </span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#allPriorOpsAreFinished()">allPriorOpsAreFinished</a></strong>()</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#await()">await</a></strong>()</code>
<div class="block">wait for all operations started prior to issuing the barrier to complete</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent">OpOrder.Group</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#getSyncPoint()">getSyncPoint</a></strong>()</code>
<div class="block">returns the Group we are waiting on - any Group with .compareTo(getSyncPoint()) <= 0
must complete before await() returns</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#isAfter(org.apache.cassandra.utils.concurrent.OpOrder.Group)">isAfter</a></strong>(<a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent">OpOrder.Group</a> group)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#issue()">issue</a></strong>()</code>
<div class="block">Issues (seals) the barrier, meaning no new operations may be issued against it, and expires the current
Group.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#markBlocking()">markBlocking</a></strong>()</code>
<div class="block">Mark all prior operations as blocking, potentially signalling them to more aggressively make progress</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html" title="interface in org.apache.cassandra.utils.concurrent">WaitQueue.Signal</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html#register()">register</a></strong>()</code>
<div class="block">Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="OpOrder.Barrier()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>OpOrder.Barrier</h4>
<pre>public OpOrder.Barrier()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="isAfter(org.apache.cassandra.utils.concurrent.OpOrder.Group)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAfter</h4>
<pre>public boolean isAfter(<a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent">OpOrder.Group</a> group)</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if @param group was started prior to the issuing of the barrier.
(Until issue is called, always returns true, but if you rely on this behavior you are probably
Doing It Wrong.)</dd></dl>
</li>
</ul>
<a name="issue()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>issue</h4>
<pre>public void issue()</pre>
<div class="block">Issues (seals) the barrier, meaning no new operations may be issued against it, and expires the current
Group. Must be called before await() for isAfter() to be properly synchronised.</div>
</li>
</ul>
<a name="markBlocking()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>markBlocking</h4>
<pre>public void markBlocking()</pre>
<div class="block">Mark all prior operations as blocking, potentially signalling them to more aggressively make progress</div>
</li>
</ul>
<a name="register()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre>public <a href="../../../../../org/apache/cassandra/utils/concurrent/WaitQueue.Signal.html" title="interface in org.apache.cassandra.utils.concurrent">WaitQueue.Signal</a> register()</pre>
<div class="block">Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true</div>
</li>
</ul>
<a name="allPriorOpsAreFinished()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allPriorOpsAreFinished</h4>
<pre>public boolean allPriorOpsAreFinished()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if all operations started prior to barrier.issue() have completed</dd></dl>
</li>
</ul>
<a name="await()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>await</h4>
<pre>public void await()</pre>
<div class="block">wait for all operations started prior to issuing the barrier to complete</div>
</li>
</ul>
<a name="getSyncPoint()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getSyncPoint</h4>
<pre>public <a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent">OpOrder.Group</a> getSyncPoint()</pre>
<div class="block">returns the Group we are waiting on - any Group with .compareTo(getSyncPoint()) <= 0
must complete before await() returns</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/OpOrder.Barrier.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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/cassandra/utils/concurrent/OpOrder.Group.html" title="class in org.apache.cassandra.utils.concurrent"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/cassandra/utils/concurrent/OpOrder.Barrier.html" target="_top">Frames</a></li>
<li><a href="OpOrder.Barrier.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All 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>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li><a href="#constructor_summary">Constr</a> | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li><a href="#constructor_detail">Constr</a> | </li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright © 2014 The Apache Software Foundation</small></p>
</body>
</html>