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} */
