You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/01/30 17:47:20 UTC
[8/9] ignite git commit: ignite-3477 lock free freelist
ignite-3477 lock free freelist
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0745af2e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0745af2e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0745af2e
Branch: refs/heads/ignite-3477-freelist
Commit: 0745af2ec7674f02627bbdf5cd6d1cbd22217713
Parents: a7652ea
Author: sboikov <sb...@gridgain.com>
Authored: Mon Jan 30 14:51:48 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Jan 30 16:24:16 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/IgniteKernal.java | 1 -
.../cache/database/freelist/FreeListImpl2.java | 62 ++++++++++----------
2 files changed, 31 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0745af2e/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index c055563..039e648 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -1142,7 +1142,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
String msg = NL +
"Metrics for local node (to disable set 'metricsLogFrequency' to 0)" + NL +
" ^-- Node [id=" + id + ", name=" + name() + ", uptime=" + getUpTimeFormatted() + "]" + NL +
- " ^-- Memory [allocPages=" + ctx.cache().context().database().pages()+ "]" + NL +
" ^-- H/N/C [hosts=" + hosts + ", nodes=" + nodes + ", CPUs=" + cpus + "]" + NL +
" ^-- CPU [cur=" + dblFmt.format(cpuLoadPct) + "%, avg=" +
dblFmt.format(avgCpuLoadPct) + "%, GC=" + dblFmt.format(gcPct) + "%]" + NL +
http://git-wip-us.apache.org/repos/asf/ignite/blob/0745af2e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl2.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl2.java
index 46b1ea0..c6859f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl2.java
@@ -37,7 +37,6 @@ import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseListImpl;
import org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.jsr166.LongAdder8;
import static org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.writePage;
@@ -65,9 +64,10 @@ public class FreeListImpl2 extends DataStructure implements FreeList, ReuseList
/** */
private final int MIN_SIZE_FOR_DATA_PAGE;
+ private final PageHandler<CacheDataRow, Boolean> updateRow = new UpdateRow();
+
/** */
- private final PageHandler<CacheDataRow, Boolean> updateRow =
- new PageHandler<CacheDataRow, Boolean>() {
+ private class UpdateRow extends PageHandler<CacheDataRow, Boolean> {
@Override public Boolean run(Page page, PageIO iox, long pageAddr, CacheDataRow row, int itemId)
throws IgniteCheckedException {
DataPageIO io = (DataPageIO)iox;
@@ -81,8 +81,9 @@ public class FreeListImpl2 extends DataStructure implements FreeList, ReuseList
};
/** */
- private final PageHandler<Void, Boolean> compact =
- new PageHandler<Void, Boolean>() {
+ private final PageHandler<Void, Boolean> compact = new Compact();
+
+ private class Compact extends PageHandler<Void, Boolean> {
@Override public Boolean run(Page page, PageIO iox, long pageAddr, Void row, int itemId)
throws IgniteCheckedException {
DataPageIO io = (DataPageIO)iox;
@@ -111,37 +112,36 @@ public class FreeListImpl2 extends DataStructure implements FreeList, ReuseList
};
/** */
- private final PageHandler<Void, Boolean> compact2 =
- new PageHandler<Void, Boolean>() {
- @Override public Boolean run(Page page, PageIO iox, long pageAddr, Void ignore, int reqSpace)
- throws IgniteCheckedException {
- DataPageIO io = (DataPageIO)iox;
+ private final PageHandler<Void, Boolean> compact2 = new Compact2();
- int freeSpace = io.getFreeSpace(pageAddr);
- int ts1 = io.getFreeSpace2(pageAddr);
+ private class Compact2 extends PageHandler<Void, Boolean> {
+ @Override public Boolean run(Page page, PageIO iox, long pageAddr, Void ignore, int reqSpace)
+ throws IgniteCheckedException {
+ DataPageIO io = (DataPageIO)iox;
- int newFreeSpace = io.compact(pageAddr, freeSpace, pageSize());
+ int freeSpace = io.getFreeSpace(pageAddr);
- int ts2 = io.getFreeSpace2(pageAddr);
+ int newFreeSpace = io.compact(pageAddr, freeSpace, pageSize());
- assert freeSpace == newFreeSpace;
+ assert freeSpace == newFreeSpace;
- if (newFreeSpace > MIN_PAGE_FREE_SPACE) {
- if (newFreeSpace > reqSpace)
- return Boolean.TRUE;
+ if (newFreeSpace > MIN_PAGE_FREE_SPACE) {
+ if (newFreeSpace >= reqSpace)
+ return Boolean.TRUE;
- int newBucket = bucket(newFreeSpace);
+ int newBucket = bucket(newFreeSpace);
- putInBucket(newBucket, page);
- }
-
- return Boolean.FALSE;
+ putInBucket(newBucket, page);
}
- };
+
+ return Boolean.FALSE;
+ }
+ };
/** */
- private final PageHandler<CacheDataRow, Integer> writeRow =
- new PageHandler<CacheDataRow, Integer>() {
+ private final PageHandler<CacheDataRow, Integer> writeRow = new WriteRow();
+
+ private class WriteRow extends PageHandler<CacheDataRow, Integer> {
@Override public Integer run(Page page, PageIO iox, long pageAddr, CacheDataRow row, int written)
throws IgniteCheckedException {
DataPageIO io = (DataPageIO)iox;
@@ -216,7 +216,9 @@ public class FreeListImpl2 extends DataStructure implements FreeList, ReuseList
};
/** */
- private final PageHandler<Void, Long> rmvRow = new PageHandler<Void, Long>() {
+ private final PageHandler<Void, Long> rmvRow = new RemoveRow();
+
+ private class RemoveRow extends PageHandler<Void, Long> {
@Override public Long run(Page page, PageIO iox, long pageAddr, Void arg, int itemId)
throws IgniteCheckedException {
DataPageIO io = (DataPageIO)iox;
@@ -304,11 +306,9 @@ public class FreeListImpl2 extends DataStructure implements FreeList, ReuseList
Thread.sleep(100);
}
}
- catch (InterruptedException ignore) {
- // No-op.
- }
catch (Exception e) {
- e.printStackTrace();
+ if (!(e instanceof InterruptedException))
+ e.printStackTrace();
}
}
});