http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c8b83ace/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html ---------------------------------------------------------------------- diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html index a2f36de..f00006f 100644 --- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html +++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html @@ -1489,7 +1489,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>WALS_PATH_FILTER</h4> -<pre>private static final org.apache.hadoop.fs.PathFilter <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1265">WALS_PATH_FILTER</a></pre> +<pre>private static final org.apache.hadoop.fs.PathFilter <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1275">WALS_PATH_FILTER</a></pre> </li> </ul> <a name="FILE_STATUS_ID_COMPARATOR"> @@ -1498,7 +1498,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockListLast"> <li class="blockList"> <h4>FILE_STATUS_ID_COMPARATOR</h4> -<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><org.apache.hadoop.fs.FileStatus> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1273">FILE_STATUS_ID_COMPARATOR</a></pre> +<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><org.apache.hadoop.fs.FileStatus> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1283">FILE_STATUS_ID_COMPARATOR</a></pre> </li> </ul> </li> @@ -1685,7 +1685,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>tryCleanupLogsOnLoad</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.503">tryCleanupLogsOnLoad</a>()</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.509">tryCleanupLogsOnLoad</a>()</pre> </li> </ul> <a name="insert-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure:A-"> @@ -1694,7 +1694,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>insert</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.524">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc, +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.530">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc, <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>[] subprocs)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#insert-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure:A-">ProcedureStore</a></code></span></div> <div class="block">When a procedure is submitted to the executor insert(proc, null) will be called. @@ -1716,7 +1716,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>insert</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.558">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>[] procs)</pre> +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.564">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>[] procs)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#insert-org.apache.hadoop.hbase.procedure2.Procedure:A-">ProcedureStore</a></code></span></div> <div class="block">Serialize a set of new procedures. These procedures are freshly submitted to the executor and each procedure @@ -1733,7 +1733,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>update</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.587">update</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre> +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.593">update</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#update-org.apache.hadoop.hbase.procedure2.Procedure-">ProcedureStore</a></code></span></div> <div class="block">The specified procedure was executed, and the new state should be written to the store.</div> @@ -1749,7 +1749,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>delete</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.610">delete</a>(long procId)</pre> +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.616">delete</a>(long procId)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#delete-long-">ProcedureStore</a></code></span></div> <div class="block">The specified procId was removed from the executor, due to completion, abort or failure. @@ -1766,7 +1766,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>delete</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.630">delete</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc, +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.636">delete</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc, long[] subProcIds)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#delete-org.apache.hadoop.hbase.procedure2.Procedure-long:A-">ProcedureStore</a></code></span></div> <div class="block">The parent procedure completed. @@ -1784,7 +1784,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>delete</h4> -<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.655">delete</a>(long[] procIds, +<pre>public void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.661">delete</a>(long[] procIds, int offset, int count)</pre> <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#delete-long:A-int-int-">ProcedureStore</a></code></span></div> @@ -1805,7 +1805,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>delete</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.666">delete</a>(long[] procIds)</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.672">delete</a>(long[] procIds)</pre> </li> </ul> <a name="acquireSlot--"> @@ -1814,7 +1814,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>acquireSlot</h4> -<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.690">acquireSlot</a>()</pre> +<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.696">acquireSlot</a>()</pre> </li> </ul> <a name="releaseSlot-org.apache.hadoop.hbase.procedure2.util.ByteSlot-"> @@ -1823,7 +1823,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>releaseSlot</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.695">releaseSlot</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a> slot)</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.701">releaseSlot</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a> slot)</pre> </li> </ul> <a name="pushData-org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType-org.apache.hadoop.hbase.procedure2.util.ByteSlot-long-long:A-"> @@ -1832,7 +1832,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>pushData</h4> -<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.702">pushData</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a> type, +<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.708">pushData</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a> type, <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a> slot, long procId, long[] subProcIds)</pre> @@ -1844,7 +1844,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>updateStoreTracker</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.762">updateStoreTracker</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a> type, +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.768">updateStoreTracker</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a> type, long procId, long[] subProcIds)</pre> </li> @@ -1855,7 +1855,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>isSyncAborted</h4> -<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.793">isSyncAborted</a>()</pre> +<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.799">isSyncAborted</a>()</pre> </li> </ul> <a name="syncLoop--"> @@ -1864,7 +1864,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>syncLoop</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.797">syncLoop</a>() +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.803">syncLoop</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -1878,7 +1878,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getSyncMetrics</h4> -<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a><<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.SyncMetrics.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.SyncMetrics</a>> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.877">getSyncMetrics</a>()</pre> +<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a><<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.SyncMetrics.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.SyncMetrics</a>> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.883">getSyncMetrics</a>()</pre> </li> </ul> <a name="syncSlots--"> @@ -1887,7 +1887,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>syncSlots</h4> -<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.886">syncSlots</a>() +<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.892">syncSlots</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -1901,7 +1901,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>syncSlots</h4> -<pre>protected long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.914">syncSlots</a>(org.apache.hadoop.fs.FSDataOutputStream stream, +<pre>protected long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.920">syncSlots</a>(org.apache.hadoop.fs.FSDataOutputStream stream, <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[] slots, int offset, int count) @@ -1918,7 +1918,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>syncStream</h4> -<pre>protected void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.933">syncStream</a>(org.apache.hadoop.fs.FSDataOutputStream stream) +<pre>protected void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.939">syncStream</a>(org.apache.hadoop.fs.FSDataOutputStream stream) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -1932,7 +1932,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>rollWriterWithRetries</h4> -<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.941">rollWriterWithRetries</a>()</pre> +<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.947">rollWriterWithRetries</a>()</pre> </li> </ul> <a name="tryRollWriter--"> @@ -1941,7 +1941,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>tryRollWriter</h4> -<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.957">tryRollWriter</a>()</pre> +<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.963">tryRollWriter</a>()</pre> </li> </ul> <a name="getMillisToNextPeriodicRoll--"> @@ -1950,7 +1950,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getMillisToNextPeriodicRoll</h4> -<pre>public long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.966">getMillisToNextPeriodicRoll</a>()</pre> +<pre>public long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.972">getMillisToNextPeriodicRoll</a>()</pre> </li> </ul> <a name="getMillisFromLastRoll--"> @@ -1959,7 +1959,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getMillisFromLastRoll</h4> -<pre>public long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.973">getMillisFromLastRoll</a>()</pre> +<pre>public long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.979">getMillisFromLastRoll</a>()</pre> </li> </ul> <a name="periodicRollForTesting--"> @@ -1968,7 +1968,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>periodicRollForTesting</h4> -<pre>void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.978">periodicRollForTesting</a>() +<pre>void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.984">periodicRollForTesting</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -1982,7 +1982,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>rollWriterForTesting</h4> -<pre>public boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.988">rollWriterForTesting</a>() +<pre>public boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.994">rollWriterForTesting</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -1996,7 +1996,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>removeInactiveLogsForTesting</h4> -<pre>void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.998">removeInactiveLogsForTesting</a>() +<pre>void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1004">removeInactiveLogsForTesting</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2010,7 +2010,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>periodicRoll</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1007">periodicRoll</a>() +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1013">periodicRoll</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2024,7 +2024,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>rollWriter</h4> -<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1028">rollWriter</a>() +<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1034">rollWriter</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2038,7 +2038,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>rollWriter</h4> -<pre>boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1052">rollWriter</a>(long logId) +<pre>boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1058">rollWriter</a>(long logId) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2052,7 +2052,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>closeCurrentLogStream</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1129">closeCurrentLogStream</a>(boolean abort)</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1135">closeCurrentLogStream</a>(boolean abort)</pre> </li> </ul> <a name="removeInactiveLogs--"> @@ -2061,7 +2061,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>removeInactiveLogs</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1156">removeInactiveLogs</a>() +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1166">removeInactiveLogs</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2075,7 +2075,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>buildHoldingCleanupTracker</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1169">buildHoldingCleanupTracker</a>()</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1179">buildHoldingCleanupTracker</a>()</pre> </li> </ul> <a name="removeAllLogs-long-java.lang.String-"> @@ -2084,7 +2084,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>removeAllLogs</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1203">removeAllLogs</a>(long lastLogId, +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1213">removeAllLogs</a>(long lastLogId, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> why)</pre> <div class="block">Remove all logs with logId <= <code>lastLogId</code>.</div> </li> @@ -2095,7 +2095,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>removeLogFile</h4> -<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1225">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> log, +<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1235">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> log, org.apache.hadoop.fs.Path walArchiveDir)</pre> </li> </ul> @@ -2105,7 +2105,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getWALDir</h4> -<pre>public org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1242">getWALDir</a>()</pre> +<pre>public org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1252">getWALDir</a>()</pre> </li> </ul> <a name="getWalArchiveDir--"> @@ -2114,7 +2114,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getWalArchiveDir</h4> -<pre>org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1247">getWalArchiveDir</a>()</pre> +<pre>org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1257">getWalArchiveDir</a>()</pre> </li> </ul> <a name="getFileSystem--"> @@ -2123,7 +2123,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getFileSystem</h4> -<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1251">getFileSystem</a>()</pre> +<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1261">getFileSystem</a>()</pre> </li> </ul> <a name="getLogFilePath-long-"> @@ -2132,7 +2132,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getLogFilePath</h4> -<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1255">getLogFilePath</a>(long logId) +<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1265">getLogFilePath</a>(long logId) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2146,7 +2146,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getLogIdFromName</h4> -<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1259">getLogIdFromName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre> +<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1269">getLogIdFromName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre> </li> </ul> <a name="getLogFiles--"> @@ -2155,7 +2155,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getLogFiles</h4> -<pre>private org.apache.hadoop.fs.FileStatus[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1283">getLogFiles</a>() +<pre>private org.apache.hadoop.fs.FileStatus[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1293">getLogFiles</a>() throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> @@ -2169,7 +2169,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>getMaxLogId</h4> -<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1299">getMaxLogId</a>(org.apache.hadoop.fs.FileStatus[] logFiles)</pre> +<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1309">getMaxLogId</a>(org.apache.hadoop.fs.FileStatus[] logFiles)</pre> <div class="block">Make sure that the file set are gotten by calling <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogFiles--"><code>getLogFiles()</code></a>, where we will sort the file set by log id.</div> <dl> @@ -2184,7 +2184,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>initOldLogs</h4> -<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1311">initOldLogs</a>(org.apache.hadoop.fs.FileStatus[] logFiles) +<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1321">initOldLogs</a>(org.apache.hadoop.fs.FileStatus[] logFiles) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <div class="block">Make sure that the file set are gotten by calling <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogFiles--"><code>getLogFiles()</code></a>, where we will sort the file set by log id.</div> @@ -2202,7 +2202,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>initTrackerFromOldLogs</h4> -<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1337">initTrackerFromOldLogs</a>()</pre> +<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1347">initTrackerFromOldLogs</a>()</pre> <div class="block">If last log's tracker is not null, use it as <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#storeTracker"><code>storeTracker</code></a>. Otherwise, set storeTracker as partial, and let <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal"><code>ProcedureWALFormatReader</code></a> rebuild it using entries in the log.</div> </li> @@ -2213,7 +2213,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockList"> <li class="blockList"> <h4>initOldLog</h4> -<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1353">initOldLog</a>(org.apache.hadoop.fs.FileStatus logFile, +<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1363">initOldLog</a>(org.apache.hadoop.fs.FileStatus logFile, org.apache.hadoop.fs.Path walArchiveDir) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <div class="block">Loads given log file and it's tracker.</div> @@ -2229,7 +2229,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P <ul class="blockListLast"> <li class="blockList"> <h4>main</h4> -<pre>public static void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1391">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] args) +<pre>public static void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1401">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] args) throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> <div class="block">Parses a directory of WALs building up ProcedureState. For testing parse and profiling.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c8b83ace/devapidocs/src-html/org/apache/hadoop/hbase/Version.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html index 23054ab..288641b 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html @@ -18,9 +18,9 @@ <span class="sourceLineNo">010</span> public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a> <span class="sourceLineNo">011</span> public static final String revision = "";<a name="line.11"></a> <span class="sourceLineNo">012</span> public static final String user = "jenkins";<a name="line.12"></a> -<span class="sourceLineNo">013</span> public static final String date = "Mon Nov 19 14:44:53 UTC 2018";<a name="line.13"></a> +<span class="sourceLineNo">013</span> public static final String date = "Tue Nov 20 14:44:19 UTC 2018";<a name="line.13"></a> <span class="sourceLineNo">014</span> public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a> -<span class="sourceLineNo">015</span> public static final String srcChecksum = "354946859721123895ba2f38486ee8a8";<a name="line.15"></a> +<span class="sourceLineNo">015</span> public static final String srcChecksum = "05b800e0fa4b560f4e9c387e4d35888d";<a name="line.15"></a> <span class="sourceLineNo">016</span>}<a name="line.16"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c8b83ace/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html index 5fc97ee..2cc0fc9 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html @@ -282,212 +282,213 @@ <span class="sourceLineNo">274</span> this.keepDeletes = false;<a name="line.274"></a> <span class="sourceLineNo">275</span> this.partial = false;<a name="line.275"></a> <span class="sourceLineNo">276</span> this.map.clear();<a name="line.276"></a> -<span class="sourceLineNo">277</span> resetModified();<a name="line.277"></a> -<span class="sourceLineNo">278</span> }<a name="line.278"></a> -<span class="sourceLineNo">279</span><a name="line.279"></a> -<span class="sourceLineNo">280</span> public boolean isModified(long procId) {<a name="line.280"></a> -<span class="sourceLineNo">281</span> final Map.Entry<Long, BitSetNode> entry = map.floorEntry(procId);<a name="line.281"></a> -<span class="sourceLineNo">282</span> return entry != null && entry.getValue().contains(procId) &&<a name="line.282"></a> -<span class="sourceLineNo">283</span> entry.getValue().isModified(procId);<a name="line.283"></a> -<span class="sourceLineNo">284</span> }<a name="line.284"></a> -<span class="sourceLineNo">285</span><a name="line.285"></a> -<span class="sourceLineNo">286</span> /**<a name="line.286"></a> -<span class="sourceLineNo">287</span> * If {@link #partial} is false, returns state from the bitmap. If no state is found for<a name="line.287"></a> -<span class="sourceLineNo">288</span> * {@code procId}, returns YES.<a name="line.288"></a> -<span class="sourceLineNo">289</span> * If partial is true, tracker doesn't have complete view of system state, so it returns MAYBE<a name="line.289"></a> -<span class="sourceLineNo">290</span> * if there is no update for the procedure or if it doesn't have a state in bitmap. Otherwise,<a name="line.290"></a> -<span class="sourceLineNo">291</span> * returns state from the bitmap.<a name="line.291"></a> -<span class="sourceLineNo">292</span> */<a name="line.292"></a> -<span class="sourceLineNo">293</span> public DeleteState isDeleted(long procId) {<a name="line.293"></a> -<span class="sourceLineNo">294</span> Map.Entry<Long, BitSetNode> entry = map.floorEntry(procId);<a name="line.294"></a> -<span class="sourceLineNo">295</span> if (entry != null && entry.getValue().contains(procId)) {<a name="line.295"></a> -<span class="sourceLineNo">296</span> BitSetNode node = entry.getValue();<a name="line.296"></a> -<span class="sourceLineNo">297</span> DeleteState state = node.isDeleted(procId);<a name="line.297"></a> -<span class="sourceLineNo">298</span> return partial && !node.isModified(procId) ? DeleteState.MAYBE : state;<a name="line.298"></a> -<span class="sourceLineNo">299</span> }<a name="line.299"></a> -<span class="sourceLineNo">300</span> return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.300"></a> -<span class="sourceLineNo">301</span> }<a name="line.301"></a> -<span class="sourceLineNo">302</span><a name="line.302"></a> -<span class="sourceLineNo">303</span> public long getActiveMinProcId() {<a name="line.303"></a> -<span class="sourceLineNo">304</span> Map.Entry<Long, BitSetNode> entry = map.firstEntry();<a name="line.304"></a> -<span class="sourceLineNo">305</span> return entry == null ? Procedure.NO_PROC_ID : entry.getValue().getActiveMinProcId();<a name="line.305"></a> -<span class="sourceLineNo">306</span> }<a name="line.306"></a> -<span class="sourceLineNo">307</span><a name="line.307"></a> -<span class="sourceLineNo">308</span> public void setKeepDeletes(boolean keepDeletes) {<a name="line.308"></a> -<span class="sourceLineNo">309</span> this.keepDeletes = keepDeletes;<a name="line.309"></a> -<span class="sourceLineNo">310</span> // If not to keep deletes, remove the BitSetNodes which are empty (i.e. contains ids of deleted<a name="line.310"></a> -<span class="sourceLineNo">311</span> // procedures).<a name="line.311"></a> -<span class="sourceLineNo">312</span> if (!keepDeletes) {<a name="line.312"></a> -<span class="sourceLineNo">313</span> Iterator<Map.Entry<Long, BitSetNode>> it = map.entrySet().iterator();<a name="line.313"></a> -<span class="sourceLineNo">314</span> while (it.hasNext()) {<a name="line.314"></a> -<span class="sourceLineNo">315</span> Map.Entry<Long, BitSetNode> entry = it.next();<a name="line.315"></a> -<span class="sourceLineNo">316</span> if (entry.getValue().isEmpty()) {<a name="line.316"></a> -<span class="sourceLineNo">317</span> it.remove();<a name="line.317"></a> -<span class="sourceLineNo">318</span> }<a name="line.318"></a> -<span class="sourceLineNo">319</span> }<a name="line.319"></a> -<span class="sourceLineNo">320</span> }<a name="line.320"></a> -<span class="sourceLineNo">321</span> }<a name="line.321"></a> -<span class="sourceLineNo">322</span><a name="line.322"></a> -<span class="sourceLineNo">323</span> public boolean isPartial() {<a name="line.323"></a> -<span class="sourceLineNo">324</span> return partial;<a name="line.324"></a> -<span class="sourceLineNo">325</span> }<a name="line.325"></a> -<span class="sourceLineNo">326</span><a name="line.326"></a> -<span class="sourceLineNo">327</span> public void setPartialFlag(boolean isPartial) {<a name="line.327"></a> -<span class="sourceLineNo">328</span> if (this.partial && !isPartial) {<a name="line.328"></a> -<span class="sourceLineNo">329</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.329"></a> -<span class="sourceLineNo">330</span> entry.getValue().unsetPartialFlag();<a name="line.330"></a> -<span class="sourceLineNo">331</span> }<a name="line.331"></a> -<span class="sourceLineNo">332</span> }<a name="line.332"></a> -<span class="sourceLineNo">333</span> this.partial = isPartial;<a name="line.333"></a> -<span class="sourceLineNo">334</span> }<a name="line.334"></a> -<span class="sourceLineNo">335</span><a name="line.335"></a> -<span class="sourceLineNo">336</span> /**<a name="line.336"></a> -<span class="sourceLineNo">337</span> * @return true, if no procedure is active, else false.<a name="line.337"></a> -<span class="sourceLineNo">338</span> */<a name="line.338"></a> -<span class="sourceLineNo">339</span> public boolean isEmpty() {<a name="line.339"></a> -<span class="sourceLineNo">340</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.340"></a> -<span class="sourceLineNo">341</span> if (!entry.getValue().isEmpty()) {<a name="line.341"></a> -<span class="sourceLineNo">342</span> return false;<a name="line.342"></a> -<span class="sourceLineNo">343</span> }<a name="line.343"></a> -<span class="sourceLineNo">344</span> }<a name="line.344"></a> -<span class="sourceLineNo">345</span> return true;<a name="line.345"></a> -<span class="sourceLineNo">346</span> }<a name="line.346"></a> -<span class="sourceLineNo">347</span><a name="line.347"></a> -<span class="sourceLineNo">348</span> /**<a name="line.348"></a> -<span class="sourceLineNo">349</span> * @return true if all procedure was modified or deleted since last call to<a name="line.349"></a> -<span class="sourceLineNo">350</span> * {@link #resetModified()}.<a name="line.350"></a> -<span class="sourceLineNo">351</span> */<a name="line.351"></a> -<span class="sourceLineNo">352</span> public boolean isAllModified() {<a name="line.352"></a> -<span class="sourceLineNo">353</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.353"></a> -<span class="sourceLineNo">354</span> if (!entry.getValue().isAllModified()) {<a name="line.354"></a> -<span class="sourceLineNo">355</span> return false;<a name="line.355"></a> -<span class="sourceLineNo">356</span> }<a name="line.356"></a> -<span class="sourceLineNo">357</span> }<a name="line.357"></a> -<span class="sourceLineNo">358</span> return true;<a name="line.358"></a> -<span class="sourceLineNo">359</span> }<a name="line.359"></a> -<span class="sourceLineNo">360</span><a name="line.360"></a> -<span class="sourceLineNo">361</span> /**<a name="line.361"></a> -<span class="sourceLineNo">362</span> * Will be used when there are too many proc wal files. We will rewrite the states of the active<a name="line.362"></a> -<span class="sourceLineNo">363</span> * procedures in the oldest proc wal file so that we can delete it.<a name="line.363"></a> -<span class="sourceLineNo">364</span> * @return all the active procedure ids in this tracker.<a name="line.364"></a> -<span class="sourceLineNo">365</span> */<a name="line.365"></a> -<span class="sourceLineNo">366</span> public long[] getAllActiveProcIds() {<a name="line.366"></a> -<span class="sourceLineNo">367</span> return map.values().stream().map(BitSetNode::getActiveProcIds).filter(p -> p.length > 0)<a name="line.367"></a> -<span class="sourceLineNo">368</span> .flatMapToLong(LongStream::of).toArray();<a name="line.368"></a> -<span class="sourceLineNo">369</span> }<a name="line.369"></a> -<span class="sourceLineNo">370</span><a name="line.370"></a> -<span class="sourceLineNo">371</span> /**<a name="line.371"></a> -<span class="sourceLineNo">372</span> * Clears the list of updated procedure ids. This doesn't affect global list of active<a name="line.372"></a> -<span class="sourceLineNo">373</span> * procedure ids.<a name="line.373"></a> -<span class="sourceLineNo">374</span> */<a name="line.374"></a> -<span class="sourceLineNo">375</span> public void resetModified() {<a name="line.375"></a> -<span class="sourceLineNo">376</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.376"></a> -<span class="sourceLineNo">377</span> entry.getValue().resetModified();<a name="line.377"></a> -<span class="sourceLineNo">378</span> }<a name="line.378"></a> -<span class="sourceLineNo">379</span> minModifiedProcId = Long.MAX_VALUE;<a name="line.379"></a> -<span class="sourceLineNo">380</span> maxModifiedProcId = Long.MIN_VALUE;<a name="line.380"></a> -<span class="sourceLineNo">381</span> }<a name="line.381"></a> -<span class="sourceLineNo">382</span><a name="line.382"></a> -<span class="sourceLineNo">383</span> private BitSetNode getOrCreateNode(long procId) {<a name="line.383"></a> -<span class="sourceLineNo">384</span> // If procId can fit in left node (directly or by growing it)<a name="line.384"></a> -<span class="sourceLineNo">385</span> BitSetNode leftNode = null;<a name="line.385"></a> -<span class="sourceLineNo">386</span> boolean leftCanGrow = false;<a name="line.386"></a> -<span class="sourceLineNo">387</span> Map.Entry<Long, BitSetNode> leftEntry = map.floorEntry(procId);<a name="line.387"></a> -<span class="sourceLineNo">388</span> if (leftEntry != null) {<a name="line.388"></a> -<span class="sourceLineNo">389</span> leftNode = leftEntry.getValue();<a name="line.389"></a> -<span class="sourceLineNo">390</span> if (leftNode.contains(procId)) {<a name="line.390"></a> -<span class="sourceLineNo">391</span> return leftNode;<a name="line.391"></a> -<span class="sourceLineNo">392</span> }<a name="line.392"></a> -<span class="sourceLineNo">393</span> leftCanGrow = leftNode.canGrow(procId);<a name="line.393"></a> -<span class="sourceLineNo">394</span> }<a name="line.394"></a> -<span class="sourceLineNo">395</span><a name="line.395"></a> -<span class="sourceLineNo">396</span> // If procId can fit in right node (directly or by growing it)<a name="line.396"></a> -<span class="sourceLineNo">397</span> BitSetNode rightNode = null;<a name="line.397"></a> -<span class="sourceLineNo">398</span> boolean rightCanGrow = false;<a name="line.398"></a> -<span class="sourceLineNo">399</span> Map.Entry<Long, BitSetNode> rightEntry = map.ceilingEntry(procId);<a name="line.399"></a> -<span class="sourceLineNo">400</span> if (rightEntry != null) {<a name="line.400"></a> -<span class="sourceLineNo">401</span> rightNode = rightEntry.getValue();<a name="line.401"></a> -<span class="sourceLineNo">402</span> rightCanGrow = rightNode.canGrow(procId);<a name="line.402"></a> -<span class="sourceLineNo">403</span> if (leftNode != null) {<a name="line.403"></a> -<span class="sourceLineNo">404</span> if (leftNode.canMerge(rightNode)) {<a name="line.404"></a> -<span class="sourceLineNo">405</span> // merge left and right node<a name="line.405"></a> -<span class="sourceLineNo">406</span> return mergeNodes(leftNode, rightNode);<a name="line.406"></a> -<span class="sourceLineNo">407</span> }<a name="line.407"></a> -<span class="sourceLineNo">408</span><a name="line.408"></a> -<span class="sourceLineNo">409</span> // If left and right nodes can not merge, decide which one to grow.<a name="line.409"></a> -<span class="sourceLineNo">410</span> if (leftCanGrow && rightCanGrow) {<a name="line.410"></a> -<span class="sourceLineNo">411</span> if ((procId - leftNode.getEnd()) <= (rightNode.getStart() - procId)) {<a name="line.411"></a> -<span class="sourceLineNo">412</span> return growNode(leftNode, procId);<a name="line.412"></a> -<span class="sourceLineNo">413</span> }<a name="line.413"></a> -<span class="sourceLineNo">414</span> return growNode(rightNode, procId);<a name="line.414"></a> -<span class="sourceLineNo">415</span> }<a name="line.415"></a> -<span class="sourceLineNo">416</span> }<a name="line.416"></a> -<span class="sourceLineNo">417</span> }<a name="line.417"></a> -<span class="sourceLineNo">418</span><a name="line.418"></a> -<span class="sourceLineNo">419</span> // grow the left node<a name="line.419"></a> -<span class="sourceLineNo">420</span> if (leftCanGrow) {<a name="line.420"></a> -<span class="sourceLineNo">421</span> return growNode(leftNode, procId);<a name="line.421"></a> -<span class="sourceLineNo">422</span> }<a name="line.422"></a> -<span class="sourceLineNo">423</span><a name="line.423"></a> -<span class="sourceLineNo">424</span> // grow the right node<a name="line.424"></a> -<span class="sourceLineNo">425</span> if (rightCanGrow) {<a name="line.425"></a> -<span class="sourceLineNo">426</span> return growNode(rightNode, procId);<a name="line.426"></a> -<span class="sourceLineNo">427</span> }<a name="line.427"></a> -<span class="sourceLineNo">428</span><a name="line.428"></a> -<span class="sourceLineNo">429</span> // add new node if there are no left/right nodes which can be used.<a name="line.429"></a> -<span class="sourceLineNo">430</span> BitSetNode node = new BitSetNode(procId, partial);<a name="line.430"></a> -<span class="sourceLineNo">431</span> map.put(node.getStart(), node);<a name="line.431"></a> -<span class="sourceLineNo">432</span> return node;<a name="line.432"></a> -<span class="sourceLineNo">433</span> }<a name="line.433"></a> -<span class="sourceLineNo">434</span><a name="line.434"></a> -<span class="sourceLineNo">435</span> /**<a name="line.435"></a> -<span class="sourceLineNo">436</span> * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.436"></a> -<span class="sourceLineNo">437</span> * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.437"></a> -<span class="sourceLineNo">438</span> */<a name="line.438"></a> -<span class="sourceLineNo">439</span> private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.439"></a> -<span class="sourceLineNo">440</span> map.remove(node.getStart());<a name="line.440"></a> -<span class="sourceLineNo">441</span> node.grow(procId);<a name="line.441"></a> -<span class="sourceLineNo">442</span> map.put(node.getStart(), node);<a name="line.442"></a> -<span class="sourceLineNo">443</span> return node;<a name="line.443"></a> -<span class="sourceLineNo">444</span> }<a name="line.444"></a> -<span class="sourceLineNo">445</span><a name="line.445"></a> -<span class="sourceLineNo">446</span> /**<a name="line.446"></a> -<span class="sourceLineNo">447</span> * Merges {@code leftNode} & {@code rightNode} and updates the map.<a name="line.447"></a> -<span class="sourceLineNo">448</span> */<a name="line.448"></a> -<span class="sourceLineNo">449</span> private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.449"></a> -<span class="sourceLineNo">450</span> assert leftNode.getStart() < rightNode.getStart();<a name="line.450"></a> -<span class="sourceLineNo">451</span> leftNode.merge(rightNode);<a name="line.451"></a> -<span class="sourceLineNo">452</span> map.remove(rightNode.getStart());<a name="line.452"></a> -<span class="sourceLineNo">453</span> return leftNode;<a name="line.453"></a> -<span class="sourceLineNo">454</span> }<a name="line.454"></a> -<span class="sourceLineNo">455</span><a name="line.455"></a> -<span class="sourceLineNo">456</span> public void dump() {<a name="line.456"></a> -<span class="sourceLineNo">457</span> System.out.println("map " + map.size());<a name="line.457"></a> -<span class="sourceLineNo">458</span> System.out.println("isAllModified " + isAllModified());<a name="line.458"></a> -<span class="sourceLineNo">459</span> System.out.println("isEmpty " + isEmpty());<a name="line.459"></a> -<span class="sourceLineNo">460</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.460"></a> -<span class="sourceLineNo">461</span> entry.getValue().dump();<a name="line.461"></a> -<span class="sourceLineNo">462</span> }<a name="line.462"></a> -<span class="sourceLineNo">463</span> }<a name="line.463"></a> -<span class="sourceLineNo">464</span><a name="line.464"></a> -<span class="sourceLineNo">465</span> // ========================================================================<a name="line.465"></a> -<span class="sourceLineNo">466</span> // Convert to/from Protocol Buffer.<a name="line.466"></a> -<span class="sourceLineNo">467</span> // ========================================================================<a name="line.467"></a> -<span class="sourceLineNo">468</span><a name="line.468"></a> -<span class="sourceLineNo">469</span> /**<a name="line.469"></a> -<span class="sourceLineNo">470</span> * Builds<a name="line.470"></a> -<span class="sourceLineNo">471</span> * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.471"></a> -<span class="sourceLineNo">472</span> * protocol buffer from current state.<a name="line.472"></a> -<span class="sourceLineNo">473</span> */<a name="line.473"></a> -<span class="sourceLineNo">474</span> public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.474"></a> -<span class="sourceLineNo">475</span> ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.475"></a> -<span class="sourceLineNo">476</span> ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.476"></a> -<span class="sourceLineNo">477</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.477"></a> -<span class="sourceLineNo">478</span> builder.addNode(entry.getValue().convert());<a name="line.478"></a> -<span class="sourceLineNo">479</span> }<a name="line.479"></a> -<span class="sourceLineNo">480</span> return builder.build();<a name="line.480"></a> -<span class="sourceLineNo">481</span> }<a name="line.481"></a> -<span class="sourceLineNo">482</span>}<a name="line.482"></a> +<span class="sourceLineNo">277</span> minModifiedProcId = Long.MAX_VALUE;<a name="line.277"></a> +<span class="sourceLineNo">278</span> maxModifiedProcId = Long.MIN_VALUE;<a name="line.278"></a> +<span class="sourceLineNo">279</span> }<a name="line.279"></a> +<span class="sourceLineNo">280</span><a name="line.280"></a> +<span class="sourceLineNo">281</span> public boolean isModified(long procId) {<a name="line.281"></a> +<span class="sourceLineNo">282</span> final Map.Entry<Long, BitSetNode> entry = map.floorEntry(procId);<a name="line.282"></a> +<span class="sourceLineNo">283</span> return entry != null && entry.getValue().contains(procId) &&<a name="line.283"></a> +<span class="sourceLineNo">284</span> entry.getValue().isModified(procId);<a name="line.284"></a> +<span class="sourceLineNo">285</span> }<a name="line.285"></a> +<span class="sourceLineNo">286</span><a name="line.286"></a> +<span class="sourceLineNo">287</span> /**<a name="line.287"></a> +<span class="sourceLineNo">288</span> * If {@link #partial} is false, returns state from the bitmap. If no state is found for<a name="line.288"></a> +<span class="sourceLineNo">289</span> * {@code procId}, returns YES.<a name="line.289"></a> +<span class="sourceLineNo">290</span> * If partial is true, tracker doesn't have complete view of system state, so it returns MAYBE<a name="line.290"></a> +<span class="sourceLineNo">291</span> * if there is no update for the procedure or if it doesn't have a state in bitmap. Otherwise,<a name="line.291"></a> +<span class="sourceLineNo">292</span> * returns state from the bitmap.<a name="line.292"></a> +<span class="sourceLineNo">293</span> */<a name="line.293"></a> +<span class="sourceLineNo">294</span> public DeleteState isDeleted(long procId) {<a name="line.294"></a> +<span class="sourceLineNo">295</span> Map.Entry<Long, BitSetNode> entry = map.floorEntry(procId);<a name="line.295"></a> +<span class="sourceLineNo">296</span> if (entry != null && entry.getValue().contains(procId)) {<a name="line.296"></a> +<span class="sourceLineNo">297</span> BitSetNode node = entry.getValue();<a name="line.297"></a> +<span class="sourceLineNo">298</span> DeleteState state = node.isDeleted(procId);<a name="line.298"></a> +<span class="sourceLineNo">299</span> return partial && !node.isModified(procId) ? DeleteState.MAYBE : state;<a name="line.299"></a> +<span class="sourceLineNo">300</span> }<a name="line.300"></a> +<span class="sourceLineNo">301</span> return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.301"></a> +<span class="sourceLineNo">302</span> }<a name="line.302"></a> +<span class="sourceLineNo">303</span><a name="line.303"></a> +<span class="sourceLineNo">304</span> public long getActiveMinProcId() {<a name="line.304"></a> +<span class="sourceLineNo">305</span> Map.Entry<Long, BitSetNode> entry = map.firstEntry();<a name="line.305"></a> +<span class="sourceLineNo">306</span> return entry == null ? Procedure.NO_PROC_ID : entry.getValue().getActiveMinProcId();<a name="line.306"></a> +<span class="sourceLineNo">307</span> }<a name="line.307"></a> +<span class="sourceLineNo">308</span><a name="line.308"></a> +<span class="sourceLineNo">309</span> public void setKeepDeletes(boolean keepDeletes) {<a name="line.309"></a> +<span class="sourceLineNo">310</span> this.keepDeletes = keepDeletes;<a name="line.310"></a> +<span class="sourceLineNo">311</span> // If not to keep deletes, remove the BitSetNodes which are empty (i.e. contains ids of deleted<a name="line.311"></a> +<span class="sourceLineNo">312</span> // procedures).<a name="line.312"></a> +<span class="sourceLineNo">313</span> if (!keepDeletes) {<a name="line.313"></a> +<span class="sourceLineNo">314</span> Iterator<Map.Entry<Long, BitSetNode>> it = map.entrySet().iterator();<a name="line.314"></a> +<span class="sourceLineNo">315</span> while (it.hasNext()) {<a name="line.315"></a> +<span class="sourceLineNo">316</span> Map.Entry<Long, BitSetNode> entry = it.next();<a name="line.316"></a> +<span class="sourceLineNo">317</span> if (entry.getValue().isEmpty()) {<a name="line.317"></a> +<span class="sourceLineNo">318</span> it.remove();<a name="line.318"></a> +<span class="sourceLineNo">319</span> }<a name="line.319"></a> +<span class="sourceLineNo">320</span> }<a name="line.320"></a> +<span class="sourceLineNo">321</span> }<a name="line.321"></a> +<span class="sourceLineNo">322</span> }<a name="line.322"></a> +<span class="sourceLineNo">323</span><a name="line.323"></a> +<span class="sourceLineNo">324</span> public boolean isPartial() {<a name="line.324"></a> +<span class="sourceLineNo">325</span> return partial;<a name="line.325"></a> +<span class="sourceLineNo">326</span> }<a name="line.326"></a> +<span class="sourceLineNo">327</span><a name="line.327"></a> +<span class="sourceLineNo">328</span> public void setPartialFlag(boolean isPartial) {<a name="line.328"></a> +<span class="sourceLineNo">329</span> if (this.partial && !isPartial) {<a name="line.329"></a> +<span class="sourceLineNo">330</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.330"></a> +<span class="sourceLineNo">331</span> entry.getValue().unsetPartialFlag();<a name="line.331"></a> +<span class="sourceLineNo">332</span> }<a name="line.332"></a> +<span class="sourceLineNo">333</span> }<a name="line.333"></a> +<span class="sourceLineNo">334</span> this.partial = isPartial;<a name="line.334"></a> +<span class="sourceLineNo">335</span> }<a name="line.335"></a> +<span class="sourceLineNo">336</span><a name="line.336"></a> +<span class="sourceLineNo">337</span> /**<a name="line.337"></a> +<span class="sourceLineNo">338</span> * @return true, if no procedure is active, else false.<a name="line.338"></a> +<span class="sourceLineNo">339</span> */<a name="line.339"></a> +<span class="sourceLineNo">340</span> public boolean isEmpty() {<a name="line.340"></a> +<span class="sourceLineNo">341</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.341"></a> +<span class="sourceLineNo">342</span> if (!entry.getValue().isEmpty()) {<a name="line.342"></a> +<span class="sourceLineNo">343</span> return false;<a name="line.343"></a> +<span class="sourceLineNo">344</span> }<a name="line.344"></a> +<span class="sourceLineNo">345</span> }<a name="line.345"></a> +<span class="sourceLineNo">346</span> return true;<a name="line.346"></a> +<span class="sourceLineNo">347</span> }<a name="line.347"></a> +<span class="sourceLineNo">348</span><a name="line.348"></a> +<span class="sourceLineNo">349</span> /**<a name="line.349"></a> +<span class="sourceLineNo">350</span> * @return true if all procedure was modified or deleted since last call to<a name="line.350"></a> +<span class="sourceLineNo">351</span> * {@link #resetModified()}.<a name="line.351"></a> +<span class="sourceLineNo">352</span> */<a name="line.352"></a> +<span class="sourceLineNo">353</span> public boolean isAllModified() {<a name="line.353"></a> +<span class="sourceLineNo">354</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.354"></a> +<span class="sourceLineNo">355</span> if (!entry.getValue().isAllModified()) {<a name="line.355"></a> +<span class="sourceLineNo">356</span> return false;<a name="line.356"></a> +<span class="sourceLineNo">357</span> }<a name="line.357"></a> +<span class="sourceLineNo">358</span> }<a name="line.358"></a> +<span class="sourceLineNo">359</span> return true;<a name="line.359"></a> +<span class="sourceLineNo">360</span> }<a name="line.360"></a> +<span class="sourceLineNo">361</span><a name="line.361"></a> +<span class="sourceLineNo">362</span> /**<a name="line.362"></a> +<span class="sourceLineNo">363</span> * Will be used when there are too many proc wal files. We will rewrite the states of the active<a name="line.363"></a> +<span class="sourceLineNo">364</span> * procedures in the oldest proc wal file so that we can delete it.<a name="line.364"></a> +<span class="sourceLineNo">365</span> * @return all the active procedure ids in this tracker.<a name="line.365"></a> +<span class="sourceLineNo">366</span> */<a name="line.366"></a> +<span class="sourceLineNo">367</span> public long[] getAllActiveProcIds() {<a name="line.367"></a> +<span class="sourceLineNo">368</span> return map.values().stream().map(BitSetNode::getActiveProcIds).filter(p -> p.length > 0)<a name="line.368"></a> +<span class="sourceLineNo">369</span> .flatMapToLong(LongStream::of).toArray();<a name="line.369"></a> +<span class="sourceLineNo">370</span> }<a name="line.370"></a> +<span class="sourceLineNo">371</span><a name="line.371"></a> +<span class="sourceLineNo">372</span> /**<a name="line.372"></a> +<span class="sourceLineNo">373</span> * Clears the list of updated procedure ids. This doesn't affect global list of active<a name="line.373"></a> +<span class="sourceLineNo">374</span> * procedure ids.<a name="line.374"></a> +<span class="sourceLineNo">375</span> */<a name="line.375"></a> +<span class="sourceLineNo">376</span> public void resetModified() {<a name="line.376"></a> +<span class="sourceLineNo">377</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.377"></a> +<span class="sourceLineNo">378</span> entry.getValue().resetModified();<a name="line.378"></a> +<span class="sourceLineNo">379</span> }<a name="line.379"></a> +<span class="sourceLineNo">380</span> minModifiedProcId = Long.MAX_VALUE;<a name="line.380"></a> +<span class="sourceLineNo">381</span> maxModifiedProcId = Long.MIN_VALUE;<a name="line.381"></a> +<span class="sourceLineNo">382</span> }<a name="line.382"></a> +<span class="sourceLineNo">383</span><a name="line.383"></a> +<span class="sourceLineNo">384</span> private BitSetNode getOrCreateNode(long procId) {<a name="line.384"></a> +<span class="sourceLineNo">385</span> // If procId can fit in left node (directly or by growing it)<a name="line.385"></a> +<span class="sourceLineNo">386</span> BitSetNode leftNode = null;<a name="line.386"></a> +<span class="sourceLineNo">387</span> boolean leftCanGrow = false;<a name="line.387"></a> +<span class="sourceLineNo">388</span> Map.Entry<Long, BitSetNode> leftEntry = map.floorEntry(procId);<a name="line.388"></a> +<span class="sourceLineNo">389</span> if (leftEntry != null) {<a name="line.389"></a> +<span class="sourceLineNo">390</span> leftNode = leftEntry.getValue();<a name="line.390"></a> +<span class="sourceLineNo">391</span> if (leftNode.contains(procId)) {<a name="line.391"></a> +<span class="sourceLineNo">392</span> return leftNode;<a name="line.392"></a> +<span class="sourceLineNo">393</span> }<a name="line.393"></a> +<span class="sourceLineNo">394</span> leftCanGrow = leftNode.canGrow(procId);<a name="line.394"></a> +<span class="sourceLineNo">395</span> }<a name="line.395"></a> +<span class="sourceLineNo">396</span><a name="line.396"></a> +<span class="sourceLineNo">397</span> // If procId can fit in right node (directly or by growing it)<a name="line.397"></a> +<span class="sourceLineNo">398</span> BitSetNode rightNode = null;<a name="line.398"></a> +<span class="sourceLineNo">399</span> boolean rightCanGrow = false;<a name="line.399"></a> +<span class="sourceLineNo">400</span> Map.Entry<Long, BitSetNode> rightEntry = map.ceilingEntry(procId);<a name="line.400"></a> +<span class="sourceLineNo">401</span> if (rightEntry != null) {<a name="line.401"></a> +<span class="sourceLineNo">402</span> rightNode = rightEntry.getValue();<a name="line.402"></a> +<span class="sourceLineNo">403</span> rightCanGrow = rightNode.canGrow(procId);<a name="line.403"></a> +<span class="sourceLineNo">404</span> if (leftNode != null) {<a name="line.404"></a> +<span class="sourceLineNo">405</span> if (leftNode.canMerge(rightNode)) {<a name="line.405"></a> +<span class="sourceLineNo">406</span> // merge left and right node<a name="line.406"></a> +<span class="sourceLineNo">407</span> return mergeNodes(leftNode, rightNode);<a name="line.407"></a> +<span class="sourceLineNo">408</span> }<a name="line.408"></a> +<span class="sourceLineNo">409</span><a name="line.409"></a> +<span class="sourceLineNo">410</span> // If left and right nodes can not merge, decide which one to grow.<a name="line.410"></a> +<span class="sourceLineNo">411</span> if (leftCanGrow && rightCanGrow) {<a name="line.411"></a> +<span class="sourceLineNo">412</span> if ((procId - leftNode.getEnd()) <= (rightNode.getStart() - procId)) {<a name="line.412"></a> +<span class="sourceLineNo">413</span> return growNode(leftNode, procId);<a name="line.413"></a> +<span class="sourceLineNo">414</span> }<a name="line.414"></a> +<span class="sourceLineNo">415</span> return growNode(rightNode, procId);<a name="line.415"></a> +<span class="sourceLineNo">416</span> }<a name="line.416"></a> +<span class="sourceLineNo">417</span> }<a name="line.417"></a> +<span class="sourceLineNo">418</span> }<a name="line.418"></a> +<span class="sourceLineNo">419</span><a name="line.419"></a> +<span class="sourceLineNo">420</span> // grow the left node<a name="line.420"></a> +<span class="sourceLineNo">421</span> if (leftCanGrow) {<a name="line.421"></a> +<span class="sourceLineNo">422</span> return growNode(leftNode, procId);<a name="line.422"></a> +<span class="sourceLineNo">423</span> }<a name="line.423"></a> +<span class="sourceLineNo">424</span><a name="line.424"></a> +<span class="sourceLineNo">425</span> // grow the right node<a name="line.425"></a> +<span class="sourceLineNo">426</span> if (rightCanGrow) {<a name="line.426"></a> +<span class="sourceLineNo">427</span> return growNode(rightNode, procId);<a name="line.427"></a> +<span class="sourceLineNo">428</span> }<a name="line.428"></a> +<span class="sourceLineNo">429</span><a name="line.429"></a> +<span class="sourceLineNo">430</span> // add new node if there are no left/right nodes which can be used.<a name="line.430"></a> +<span class="sourceLineNo">431</span> BitSetNode node = new BitSetNode(procId, partial);<a name="line.431"></a> +<span class="sourceLineNo">432</span> map.put(node.getStart(), node);<a name="line.432"></a> +<span class="sourceLineNo">433</span> return node;<a name="line.433"></a> +<span class="sourceLineNo">434</span> }<a name="line.434"></a> +<span class="sourceLineNo">435</span><a name="line.435"></a> +<span class="sourceLineNo">436</span> /**<a name="line.436"></a> +<span class="sourceLineNo">437</span> * Grows {@code node} to contain {@code procId} and updates the map.<a name="line.437"></a> +<span class="sourceLineNo">438</span> * @return {@link BitSetNode} instance which contains {@code procId}.<a name="line.438"></a> +<span class="sourceLineNo">439</span> */<a name="line.439"></a> +<span class="sourceLineNo">440</span> private BitSetNode growNode(BitSetNode node, long procId) {<a name="line.440"></a> +<span class="sourceLineNo">441</span> map.remove(node.getStart());<a name="line.441"></a> +<span class="sourceLineNo">442</span> node.grow(procId);<a name="line.442"></a> +<span class="sourceLineNo">443</span> map.put(node.getStart(), node);<a name="line.443"></a> +<span class="sourceLineNo">444</span> return node;<a name="line.444"></a> +<span class="sourceLineNo">445</span> }<a name="line.445"></a> +<span class="sourceLineNo">446</span><a name="line.446"></a> +<span class="sourceLineNo">447</span> /**<a name="line.447"></a> +<span class="sourceLineNo">448</span> * Merges {@code leftNode} & {@code rightNode} and updates the map.<a name="line.448"></a> +<span class="sourceLineNo">449</span> */<a name="line.449"></a> +<span class="sourceLineNo">450</span> private BitSetNode mergeNodes(BitSetNode leftNode, BitSetNode rightNode) {<a name="line.450"></a> +<span class="sourceLineNo">451</span> assert leftNode.getStart() < rightNode.getStart();<a name="line.451"></a> +<span class="sourceLineNo">452</span> leftNode.merge(rightNode);<a name="line.452"></a> +<span class="sourceLineNo">453</span> map.remove(rightNode.getStart());<a name="line.453"></a> +<span class="sourceLineNo">454</span> return leftNode;<a name="line.454"></a> +<span class="sourceLineNo">455</span> }<a name="line.455"></a> +<span class="sourceLineNo">456</span><a name="line.456"></a> +<span class="sourceLineNo">457</span> public void dump() {<a name="line.457"></a> +<span class="sourceLineNo">458</span> System.out.println("map " + map.size());<a name="line.458"></a> +<span class="sourceLineNo">459</span> System.out.println("isAllModified " + isAllModified());<a name="line.459"></a> +<span class="sourceLineNo">460</span> System.out.println("isEmpty " + isEmpty());<a name="line.460"></a> +<span class="sourceLineNo">461</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.461"></a> +<span class="sourceLineNo">462</span> entry.getValue().dump();<a name="line.462"></a> +<span class="sourceLineNo">463</span> }<a name="line.463"></a> +<span class="sourceLineNo">464</span> }<a name="line.464"></a> +<span class="sourceLineNo">465</span><a name="line.465"></a> +<span class="sourceLineNo">466</span> // ========================================================================<a name="line.466"></a> +<span class="sourceLineNo">467</span> // Convert to/from Protocol Buffer.<a name="line.467"></a> +<span class="sourceLineNo">468</span> // ========================================================================<a name="line.468"></a> +<span class="sourceLineNo">469</span><a name="line.469"></a> +<span class="sourceLineNo">470</span> /**<a name="line.470"></a> +<span class="sourceLineNo">471</span> * Builds<a name="line.471"></a> +<span class="sourceLineNo">472</span> * org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker<a name="line.472"></a> +<span class="sourceLineNo">473</span> * protocol buffer from current state.<a name="line.473"></a> +<span class="sourceLineNo">474</span> */<a name="line.474"></a> +<span class="sourceLineNo">475</span> public ProcedureProtos.ProcedureStoreTracker toProto() throws IOException {<a name="line.475"></a> +<span class="sourceLineNo">476</span> ProcedureProtos.ProcedureStoreTracker.Builder builder =<a name="line.476"></a> +<span class="sourceLineNo">477</span> ProcedureProtos.ProcedureStoreTracker.newBuilder();<a name="line.477"></a> +<span class="sourceLineNo">478</span> for (Map.Entry<Long, BitSetNode> entry : map.entrySet()) {<a name="line.478"></a> +<span class="sourceLineNo">479</span> builder.addNode(entry.getValue().convert());<a name="line.479"></a> +<span class="sourceLineNo">480</span> }<a name="line.480"></a> +<span class="sourceLineNo">481</span> return builder.build();<a name="line.481"></a> +<span class="sourceLineNo">482</span> }<a name="line.482"></a> +<span class="sourceLineNo">483</span>}<a name="line.483"></a>