You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2017/02/16 14:40:55 UTC
[03/17] ignite git commit: Merge branches 'ignite-3477' and
'ignite-4652' of https://git-wip-us.apache.org/repos/asf/ignite into
ignite-4652
Merge branches 'ignite-3477' and 'ignite-4652' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-4652
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d58d0f10
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d58d0f10
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d58d0f10
Branch: refs/heads/ignite-4652
Commit: d58d0f10c537d0c00131cdaa1acfee9a10e30294
Parents: 164995f 5bde9b1 5f83c94
Author: Sergi Vladykin <se...@gmail.com>
Authored: Thu Feb 9 16:19:58 2017 +0300
Committer: Sergi Vladykin <se...@gmail.com>
Committed: Thu Feb 9 16:19:58 2017 +0300
----------------------------------------------------------------------
.../ignite/internal/pagemem/PageMemory.java | 4 -
.../pagemem/impl/PageMemoryNoStoreImpl.java | 22 +-
.../internal/pagemem/wal/record/DataRecord.java | 10 +-
.../processors/cache/GridCacheMapEntry.java | 1647 +++++++++++-------
.../cache/GridCacheUpdateAtomicResult.java | 96 +-
.../cache/IgniteCacheOffheapManager.java | 42 +
.../cache/IgniteCacheOffheapManagerImpl.java | 266 ++-
.../cache/database/CacheDataRowAdapter.java | 13 +
.../cache/database/MetadataStorage.java | 42 -
.../cache/database/freelist/FreeListImpl.java | 5 +-
.../cache/database/tree/io/BPlusIO.java | 12 -
.../distributed/dht/GridDhtCacheEntry.java | 5 +
.../apache/ignite/internal/util/GridUnsafe.java | 45 +-
.../GridCacheRebalancingSyncSelfTest.java | 12 +-
.../processors/database/BPlusTreeSelfTest.java | 11 -
.../unsafe/GridUnsafeMemorySelfTest.java | 35 +
.../junits/common/GridCommonAbstractTest.java | 7 +-
.../ignite/testsuites/IgniteCacheTestSuite.java | 10 -
.../testsuites/IgniteCacheTestSuite5.java | 19 +-
.../query/h2/database/io/H2InnerIO.java | 10 -
.../query/h2/database/io/H2LeafIO.java | 10 -
21 files changed, 1438 insertions(+), 885 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/d58d0f10/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 e1ea6d1,531665c,eed9f09..77923c6
--- 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
@@@@ -954,40 -953,40 -1042,65 +1041,65 @@@@ public class IgniteCacheOffheapManagerI
}
else
old = dataTree.put(dataRow);
--
-- if (old == null)
-- storageSize.incrementAndGet();
}
-- if (indexingEnabled) {
-- GridCacheQueryManager qryMgr = cctx.queries();
++ finishUpdate(dataRow, old);
++ }
++ finally {
++ busyLock.leaveBusy();
++ }
++ }
+
- assert qryMgr.enabled();
++ /**
++ * @param newRow New row.
++ * @param oldRow Old row if available.
++ * @throws IgniteCheckedException If failed.
++ */
++ private void finishUpdate(CacheDataRow newRow, @Nullable CacheDataRow oldRow) throws IgniteCheckedException {
++ if (oldRow == null)
++ storageSize.incrementAndGet();
- 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();
++ KeyCacheObject key = newRow.key();
- if (old != null) {
- assert old.link() != 0 : old;
- 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());
- }
++ long expireTime = newRow.expireTime();
- if (pendingEntries != null && old.expireTime() != 0)
- pendingEntries.removex(new PendingRow(old.expireTime(), old.link()));
- if (old != null) {
- assert old.link() != 0 : old;
++ if (indexingEnabled) {
++ GridCacheQueryManager qryMgr = cctx.queries();
- if (rmvOld)
- rowStore.removeRow(old.link());
- if (pendingEntries != null && old.expireTime() != 0)
- pendingEntries.removex(new PendingRow(old.expireTime(), old.link()));
++ assert qryMgr.enabled();
+
- if (rmvOld)
- rowStore.removeRow(old.link());
++ if (oldRow != null) {
++ qryMgr.store(key,
++ partId,
++ oldRow.value(), oldRow.version(),
++ newRow.value(), newRow.version(),
++ expireTime,
++ newRow.link());
++ }
++ else {
++ qryMgr.store(key,
++ partId,
++ null, null,
++ newRow.value(), newRow.version(),
++ expireTime,
++ newRow.link());
}
++ }
-- if (pendingEntries != null && expireTime != 0)
-- pendingEntries.putx(new PendingRow(expireTime, dataRow.link()));
++ if (oldRow != null) {
++ assert oldRow.link() != 0 : oldRow;
-- updateIgfsMetrics(key, (old != null ? old.value() : null), val);
-- }
-- finally {
-- busyLock.leaveBusy();
++ if (pendingEntries != null && oldRow.expireTime() != 0)
++ pendingEntries.removex(new PendingRow(oldRow.expireTime(), oldRow.link()));
++
++ if (newRow.link() != oldRow.link())
++ rowStore.removeRow(oldRow.link());
}
++
++ if (pendingEntries != null && expireTime != 0)
++ pendingEntries.putx(new PendingRow(expireTime, newRow.link()));
++
++ updateIgfsMetrics(key, (oldRow != null ? oldRow.value() : null), newRow.value());
}
/** {@inheritDoc} */
@@@@ -996,40 -995,40 -1109,49 +1108,49 @@@@
throw new NodeStoppingException("Operation has been cancelled (node is stopping).");
try {
-- CacheDataRow dataRow = dataTree.remove(new SearchRow(key));
-
- CacheObject val = null;
- GridCacheVersion ver = null;
++ CacheDataRow oldRow = dataTree.remove(new SearchRow(key));
- CacheObject val = null;
- GridCacheVersion ver = null;
-
-- if (dataRow != null) {
-- assert dataRow.link() != 0 : dataRow;
++ finishRemove(key, oldRow);
++ }
++ finally {
++ busyLock.leaveBusy();
++ }
++ }
-- if (pendingEntries != null && dataRow.expireTime() != 0)
-- pendingEntries.removex(new PendingRow(dataRow.expireTime(), dataRow.link()));
++ /**
++ * @param key Key.
++ * @param oldRow Removed row.
++ * @throws IgniteCheckedException If failed.
++ */
++ private void finishRemove(KeyCacheObject key, @Nullable CacheDataRow oldRow) throws IgniteCheckedException {
++ CacheObject val = null;
++ GridCacheVersion ver = null;
-- storageSize.decrementAndGet();
++ if (oldRow != null) {
++ assert oldRow.link() != 0 : oldRow;
-- val = dataRow.value();
++ if (pendingEntries != null && oldRow.expireTime() != 0)
++ pendingEntries.removex(new PendingRow(oldRow.expireTime(), oldRow.link()));
-- ver = dataRow.version();
-- }
++ storageSize.decrementAndGet();
-- if (indexingEnabled) {
-- GridCacheQueryManager qryMgr = cctx.queries();
++ val = oldRow.value();
-- assert qryMgr.enabled();
++ ver = oldRow.version();
++ }
-- qryMgr.remove(key, partId, val, ver);
-- }
++ if (indexingEnabled) {
++ GridCacheQueryManager qryMgr = cctx.queries();
-- if (dataRow != null)
-- rowStore.removeRow(dataRow.link());
++ assert qryMgr.enabled();
-- updateIgfsMetrics(key, (dataRow != null ? dataRow.value() : null), null);
-- }
-- finally {
-- busyLock.leaveBusy();
++ qryMgr.remove(key, partId, val, ver);
}
++
++ if (oldRow != null)
++ rowStore.removeRow(oldRow.link());
++
++ updateIgfsMetrics(key, (oldRow != null ? oldRow.value() : null), null);
}
/** {@inheritDoc} */