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/18 15:27:43 UTC
[7/9] ignite git commit: Merge remote-tracking branch
'remotes/origin/ignite-3477' into ignite-db-x-opt
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
index 102a696,3c5b158..95d68c2
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
@@@ -64,7 -65,7 +65,8 @@@ import org.apache.ignite.internal.proce
import org.apache.ignite.internal.processors.task.GridTaskProcessor;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
+ import org.apache.ignite.internal.util.StripedExecutor;
+import org.apache.ignite.internal.util.InternalStatistics;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.plugin.PluginNotFoundException;
import org.apache.ignite.plugin.PluginProvider;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 29cff66,fae9d9a..c938c74
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@@ -81,7 -82,7 +82,8 @@@ import org.apache.ignite.internal.proce
import org.apache.ignite.internal.processors.task.GridTaskProcessor;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
+ import org.apache.ignite.internal.util.StripedExecutor;
+import org.apache.ignite.internal.util.InternalStatistics;
import org.apache.ignite.internal.util.spring.IgniteSpringHelper;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index e42d42b,3b128de..6acf794
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@@ -81,8 -81,8 +81,9 @@@ import org.apache.ignite.internal.proce
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.processors.closure.GridClosureProcessor;
import org.apache.ignite.internal.processors.plugin.CachePluginManager;
+ import org.apache.ignite.internal.processors.query.GridQueryProcessor;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
+import org.apache.ignite.internal.util.CacheStatistics;
import org.apache.ignite.internal.util.F0;
import org.apache.ignite.internal.util.lang.GridFunc;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 3db8a74,57b0d84..ab01575
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@@ -1352,10 -1414,8 +1415,10 @@@ public class GridCacheProcessor extend
storeMgr.initialize(cfgStore, sesHolders);
- boolean affNode = CU.affinityNode(ctx.discovery().localNode(), cfg.getNodeFilter());
+ boolean affNode = cfg.getCacheMode() == LOCAL || CU.affinityNode(ctx.discovery().localNode(), cfg.getNodeFilter());
+ CacheStatistics stats = ctx.stats().cache();
+
GridCacheContext<?, ?> cacheCtx = new GridCacheContext(
ctx,
sharedCtx,
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 2343bb9,63a5072..ca35b5d
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@@ -54,7 -59,7 +60,8 @@@ import org.apache.ignite.internal.util.
import org.apache.ignite.internal.util.GridAtomicLong;
import org.apache.ignite.internal.util.GridCloseableIteratorAdapter;
import org.apache.ignite.internal.util.GridEmptyCloseableIterator;
+import org.apache.ignite.internal.util.PutStatistic;
+ import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.lang.GridCloseableIterator;
import org.apache.ignite.internal.util.lang.GridCursor;
import org.apache.ignite.internal.util.lang.GridIterator;
@@@ -68,11 -73,8 +75,13 @@@ import org.jetbrains.annotations.Nullab
import static org.apache.ignite.internal.pagemem.PageIdAllocator.FLAG_IDX;
import static org.apache.ignite.internal.pagemem.PageIdAllocator.INDEX_PARTITION;
+import static org.apache.ignite.internal.util.PutStatistic.Ops.FIND_ONE;
+import static org.apache.ignite.internal.util.PutStatistic.Ops.IDX_UPDATE;
+import static org.apache.ignite.internal.util.PutStatistic.Ops.STORE_ADD;
+import static org.apache.ignite.internal.util.PutStatistic.Ops.STORE_RMV;
+import static org.apache.ignite.internal.util.PutStatistic.Ops.TREE_PUT;
+ import static org.apache.ignite.internal.pagemem.PageIdUtils.itemId;
+ import static org.apache.ignite.internal.pagemem.PageIdUtils.pageId;
/**
*
@@@ -842,64 -892,47 +899,59 @@@ public class IgniteCacheOffheapManagerI
key.valueBytes(cctx.cacheObjectContext());
val.valueBytes(cctx.cacheObjectContext());
- if (true) {
- cctx.stats().opStart(TREE_PUT);
-
- data.put(key, dataRow);
+ if (!busyLock.enterBusy())
+ throw new NodeStoppingException("Operation has been cancelled (node is stopping).");
- cctx.stats().opEnd(TREE_PUT);
+ try {
+ rowStore.addRow(dataRow);
- return;
- }
+ assert dataRow.link() != 0 : dataRow;
- rowStore.addRow(dataRow);
++ cctx.stats().opStart(TREE_PUT);
+
- assert dataRow.link() != 0 : dataRow;
+ CacheDataRow old = dataTree.put(dataRow);
- cctx.stats().opStart(TREE_PUT);
+ if (old == null)
+ storageSize.incrementAndGet();
- DataRow old = dataTree.put(dataRow);
++ cctx.stats().opEnd(TREE_PUT);
+
- cctx.stats().opEnd(TREE_PUT);
+ if (indexingEnabled) {
++ cctx.stats().opStart(IDX_UPDATE);
+
- if (old == null)
- storageSize.incrementAndGet();
+ GridCacheQueryManager qryMgr = cctx.queries();
- if (indexingEnabled) {
- cctx.stats().opStart(IDX_UPDATE);
+ assert qryMgr.enabled();
- GridCacheQueryManager qryMgr = cctx.queries();
+ if (old != null)
+ qryMgr.store(key, p, old.value(), old.version(), val, ver, expireTime, dataRow.link());
+ else
+ qryMgr.store(key, p, null, null, val, ver, expireTime, dataRow.link());
+
- assert qryMgr.enabled();
++ cctx.stats().opEnd(IDX_UPDATE);
+ }
- if (old != null)
- qryMgr.store(key, p, old.value(), old.version(), val, ver, expireTime, dataRow.link());
- else
- qryMgr.store(key, p, null, null, val, ver, expireTime, dataRow.link());
+ if (old != null) {
+ assert old.link() != 0 : old;
- cctx.stats().opEnd(IDX_UPDATE);
- }
+ if (pendingEntries != null && old.expireTime() != 0)
+ pendingEntries.remove(new PendingRow(old.expireTime(), old.link()));
- if (old != null) {
- assert old.link() != 0 : old;
++ CacheStatistics.opStart(PutStatistic.Ops.STORE_RMV);
+
- if (pendingEntries != null && old.expireTime() != 0) {
- if (true)
- throw new IgniteCheckedException("Error");
+ rowStore.removeRow(old.link());
+
- pendingEntries.remove(new PendingRow(old.expireTime(), old.link()));
++ CacheStatistics.opEnd(PutStatistic.Ops.STORE_RMV);
}
- CacheStatistics.opStart(PutStatistic.Ops.STORE_RMV);
-
- rowStore.removeRow(old.link());
-
- CacheStatistics.opEnd(PutStatistic.Ops.STORE_RMV);
+ if (pendingEntries != null && expireTime != 0)
+ pendingEntries.put(new PendingRow(expireTime, dataRow.link()));
+ updateIgfsMetrics(key, (old != null ? old.value() : null), val);
+ }
+ finally {
+ busyLock.leaveBusy();
}
-
- if (pendingEntries != null && expireTime != 0)
- pendingEntries.put(new PendingRow(expireTime, dataRow.link()));
}
/** {@inheritDoc} */
@@@ -937,15 -980,7 +999,14 @@@
/** {@inheritDoc} */
@Override public CacheDataRow find(KeyCacheObject key)
throws IgniteCheckedException {
- return dataTree.findOne(new SearchRow(key));
+ cctx.stats().opStart(FIND_ONE);
+
+ try {
- return data.get(key);
- //return dataTree.findOne(new KeySearchRow(key.hashCode(), key, 0));
++ return dataTree.findOne(new SearchRow(key));
+ }
+ finally {
+ cctx.stats().opEnd(FIND_ONE);
+ }
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
index 43c6a46,6c1b21b..f0abe74
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
@@@ -83,25 -82,17 +84,25 @@@ public class FreeListImpl extends Pages
assert oldFreeSpace > 0 : oldFreeSpace;
+ CacheStatistics.opStart(PutStatistic.Ops.STORE_ADD);
+
// If the full row does not fit into this page write only a fragment.
- written = (written == 0 && oldFreeSpace >= rowSize) ? addRow(page, buf, io, row, rowSize):
- addRowFragment(page, buf, io, row, written, rowSize);
+ written = (written == 0 && oldFreeSpace >= rowSize) ? addRow(page, pageAddr, io, row, rowSize):
+ addRowFragment(page, pageAddr, io, row, written, rowSize);
+ CacheStatistics.opEnd(PutStatistic.Ops.STORE_ADD);
+
// Reread free space after update.
- int newFreeSpace = io.getFreeSpace(buf);
+ int newFreeSpace = io.getFreeSpace(pageAddr);
if (newFreeSpace > MIN_PAGE_FREE_SPACE) {
+ CacheStatistics.opStart(PutStatistic.Ops.STORE_ADD_FREE_LIST_PUT);
+
int bucket = bucket(newFreeSpace, false);
- put(null, page, buf, bucket);
+ put(null, page, pageAddr, bucket);
+
+ CacheStatistics.opEnd(PutStatistic.Ops.STORE_ADD_FREE_LIST_PUT);
}
// Avoid boxing with garbage generation for usual case.
@@@ -222,13 -208,9 +221,13 @@@
int oldBucket = bucket(oldFreeSpace, false);
if (oldBucket != newBucket) {
+ CacheStatistics.opStart(PutStatistic.Ops.STORE_RMV_FREE_LIST_PUT);
+
// It is possible that page was concurrently taken for put, in this case put will handle bucket change.
- if (removeDataPage(page, buf, io, oldBucket))
- put(null, page, buf, newBucket);
+ if (removeDataPage(page, pageAddr, io, oldBucket))
+ put(null, page, pageAddr, newBucket);
+
+ CacheStatistics.opEnd(PutStatistic.Ops.STORE_RMV_FREE_LIST_PUT);
}
}
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ae511af3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
index ea3bd43,1f421c9..9be12f7
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateFuture.java
@@@ -384,9 -377,11 +377,11 @@@ public class GridNearAtomicSingleUpdate
/** {@inheritDoc} */
@Override protected void mapOnTopology() {
- cache.topology().readLock();
+ //cache.topology().readLock();
- AffinityTopologyVersion topVer = null;
+ AffinityTopologyVersion topVer;
+
+ GridCacheVersion futVer;
try {
if (cache.topology().stopping()) {
@@@ -430,10 -427,11 +427,11 @@@
}
}
finally {
- cache.topology().readUnlock();
+ //cache.topology().readUnlock();
}
- map(topVer);
+ if (futVer != null)
+ map(topVer, futVer);
}
/** {@inheritDoc} */