UNPKG

cassandra-server

Version:

A thin Javascript wrapper around Apache Cassandra to provide out of the box server support

398 lines (395 loc) 17.4 kB
<!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 (version 1.7.0_67) on Sun Sep 07 15:29:31 CEST 2014 --> <title>SSTableRewriter (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="SSTableRewriter (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/SSTableRewriter.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/io/sstable/SSTableReader.SizeComparator.html" title="class in org.apache.cassandra.io.sstable"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../../org/apache/cassandra/io/sstable/SSTableScanner.html" title="class in org.apache.cassandra.io.sstable"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../../index.html?org/apache/cassandra/io/sstable/SSTableRewriter.html" target="_top">Frames</a></li> <li><a href="SSTableRewriter.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:&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li> <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail:&nbsp;</li> <li>Field&nbsp;|&nbsp;</li> <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</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.io.sstable</div> <h2 title="Class SSTableRewriter" class="title">Class SSTableRewriter</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> <li>org.apache.cassandra.io.sstable.SSTableRewriter</li> </ul> </li> </ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <hr> <br> <pre>public class <span class="strong">SSTableRewriter</span> extends java.lang.Object</pre> <div class="block">Wraps one or more writers as output for rewriting one or more readers: every sstable_preemptive_open_interval_in_mb we look in the summary we're collecting for the latest writer for the penultimate key that we know to have been fully flushed to the index file, and then double check that the key is fully present in the flushed data file. Then we move the starts of each reader forwards to that point, replace them in the datatracker, and attach a runnable for on-close (i.e. when all references expire) that drops the page cache prior to that key position hard-links are created for each partially written sstable so that readers opened against them continue to work past the rename of the temporary file, which is deleted once all readers against the hard-link have been closed. If for any reason the writer is rolled over, we immediately rename and fully expose the completed file in the DataTracker. On abort we restore the original lower bounds to the existing readers and delete any temporary files we had in progress, but leave any hard-links in place for the readers we opened to cleanup when they're finished as we would had we finished successfully.</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">&nbsp;</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/io/sstable/SSTableRewriter.html#SSTableRewriter(org.apache.cassandra.db.ColumnFamilyStore,%20java.util.Set,%20long,%20org.apache.cassandra.db.compaction.OperationType,%20boolean)">SSTableRewriter</a></strong>(<a href="../../../../../org/apache/cassandra/db/ColumnFamilyStore.html" title="class in org.apache.cassandra.db">ColumnFamilyStore</a>&nbsp;cfs, java.util.Set&lt;<a href="../../../../../org/apache/cassandra/io/sstable/SSTableReader.html" title="class in org.apache.cassandra.io.sstable">SSTableReader</a>&gt;&nbsp;rewriting, long&nbsp;maxAge, <a href="../../../../../org/apache/cassandra/db/compaction/OperationType.html" title="enum in org.apache.cassandra.db.compaction">OperationType</a>&nbsp;rewriteType, boolean&nbsp;isOffline)</code>&nbsp;</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">&nbsp;</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>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#abort()">abort</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../../org/apache/cassandra/db/RowIndexEntry.html" title="class in org.apache.cassandra.db">RowIndexEntry</a></code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#append(org.apache.cassandra.db.compaction.AbstractCompactedRow)">append</a></strong>(<a href="../../../../../org/apache/cassandra/db/compaction/AbstractCompactedRow.html" title="class in org.apache.cassandra.db.compaction">AbstractCompactedRow</a>&nbsp;row)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code><a href="../../../../../org/apache/cassandra/io/sstable/SSTableWriter.html" title="class in org.apache.cassandra.io.sstable">SSTableWriter</a></code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#currentWriter()">currentWriter</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#finish()">finish</a></strong>()</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#finish(boolean)">finish</a></strong>(boolean&nbsp;cleanupOldReaders)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#finish(boolean,%20long)">finish</a></strong>(boolean&nbsp;cleanupOldReaders, long&nbsp;repairedAt)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#finish(long)">finish</a></strong>(long&nbsp;repairedAt)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.util.List&lt;<a href="../../../../../org/apache/cassandra/io/sstable/SSTableReader.html" title="class in org.apache.cassandra.io.sstable">SSTableReader</a>&gt;</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#finished()">finished</a></strong>()</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#switchWriter(org.apache.cassandra.io.sstable.SSTableWriter)">switchWriter</a></strong>(<a href="../../../../../org/apache/cassandra/io/sstable/SSTableWriter.html" title="class in org.apache.cassandra.io.sstable">SSTableWriter</a>&nbsp;newWriter)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../../org/apache/cassandra/db/RowIndexEntry.html" title="class in org.apache.cassandra.db">RowIndexEntry</a></code></td> <td class="colLast"><code><strong><a href="../../../../../org/apache/cassandra/io/sstable/SSTableRewriter.html#tryAppend(org.apache.cassandra.db.compaction.AbstractCompactedRow)">tryAppend</a></strong>(<a href="../../../../../org/apache/cassandra/db/compaction/AbstractCompactedRow.html" title="class in org.apache.cassandra.db.compaction">AbstractCompactedRow</a>&nbsp;row)</code>&nbsp;</td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <!-- --> </a> <h3>Methods inherited from class&nbsp;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="SSTableRewriter(org.apache.cassandra.db.ColumnFamilyStore, java.util.Set, long, org.apache.cassandra.db.compaction.OperationType, boolean)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>SSTableRewriter</h4> <pre>public&nbsp;SSTableRewriter(<a href="../../../../../org/apache/cassandra/db/ColumnFamilyStore.html" title="class in org.apache.cassandra.db">ColumnFamilyStore</a>&nbsp;cfs, java.util.Set&lt;<a href="../../../../../org/apache/cassandra/io/sstable/SSTableReader.html" title="class in org.apache.cassandra.io.sstable">SSTableReader</a>&gt;&nbsp;rewriting, long&nbsp;maxAge, <a href="../../../../../org/apache/cassandra/db/compaction/OperationType.html" title="enum in org.apache.cassandra.db.compaction">OperationType</a>&nbsp;rewriteType, boolean&nbsp;isOffline)</pre> </li> </ul> </li> </ul> <!-- ============ METHOD DETAIL ========== --> <ul class="blockList"> <li class="blockList"><a name="method_detail"> <!-- --> </a> <h3>Method Detail</h3> <a name="currentWriter()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>currentWriter</h4> <pre>public&nbsp;<a href="../../../../../org/apache/cassandra/io/sstable/SSTableWriter.html" title="class in org.apache.cassandra.io.sstable">SSTableWriter</a>&nbsp;currentWriter()</pre> </li> </ul> <a name="append(org.apache.cassandra.db.compaction.AbstractCompactedRow)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>append</h4> <pre>public&nbsp;<a href="../../../../../org/apache/cassandra/db/RowIndexEntry.html" title="class in org.apache.cassandra.db">RowIndexEntry</a>&nbsp;append(<a href="../../../../../org/apache/cassandra/db/compaction/AbstractCompactedRow.html" title="class in org.apache.cassandra.db.compaction">AbstractCompactedRow</a>&nbsp;row)</pre> </li> </ul> <a name="tryAppend(org.apache.cassandra.db.compaction.AbstractCompactedRow)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>tryAppend</h4> <pre>public&nbsp;<a href="../../../../../org/apache/cassandra/db/RowIndexEntry.html" title="class in org.apache.cassandra.db">RowIndexEntry</a>&nbsp;tryAppend(<a href="../../../../../org/apache/cassandra/db/compaction/AbstractCompactedRow.html" title="class in org.apache.cassandra.db.compaction">AbstractCompactedRow</a>&nbsp;row)</pre> </li> </ul> <a name="abort()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>abort</h4> <pre>public&nbsp;void&nbsp;abort()</pre> </li> </ul> <a name="switchWriter(org.apache.cassandra.io.sstable.SSTableWriter)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>switchWriter</h4> <pre>public&nbsp;void&nbsp;switchWriter(<a href="../../../../../org/apache/cassandra/io/sstable/SSTableWriter.html" title="class in org.apache.cassandra.io.sstable">SSTableWriter</a>&nbsp;newWriter)</pre> </li> </ul> <a name="finish()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>finish</h4> <pre>public&nbsp;void&nbsp;finish()</pre> </li> </ul> <a name="finish(long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>finish</h4> <pre>public&nbsp;void&nbsp;finish(long&nbsp;repairedAt)</pre> </li> </ul> <a name="finish(boolean)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>finish</h4> <pre>public&nbsp;void&nbsp;finish(boolean&nbsp;cleanupOldReaders)</pre> </li> </ul> <a name="finish(boolean, long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>finish</h4> <pre>public&nbsp;void&nbsp;finish(boolean&nbsp;cleanupOldReaders, long&nbsp;repairedAt)</pre> </li> </ul> <a name="finished()"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>finished</h4> <pre>public&nbsp;java.util.List&lt;<a href="../../../../../org/apache/cassandra/io/sstable/SSTableReader.html" title="class in org.apache.cassandra.io.sstable">SSTableReader</a>&gt;&nbsp;finished()</pre> </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/SSTableRewriter.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/io/sstable/SSTableReader.SizeComparator.html" title="class in org.apache.cassandra.io.sstable"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../../org/apache/cassandra/io/sstable/SSTableScanner.html" title="class in org.apache.cassandra.io.sstable"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../../index.html?org/apache/cassandra/io/sstable/SSTableRewriter.html" target="_top">Frames</a></li> <li><a href="SSTableRewriter.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:&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li> <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail:&nbsp;</li> <li>Field&nbsp;|&nbsp;</li> <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</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 &copy; 2014 The Apache Software Foundation</small></p> </body> </html>