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/23 12:48:14 UTC
[3/3] ignite git commit: ignite-3477 Optimization for update if value
size does not change.
ignite-3477 Optimization for update if value size does not change.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e18cfe2b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e18cfe2b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e18cfe2b
Branch: refs/heads/ignite-3477-1
Commit: e18cfe2beb5a829d6a90121408dcd7944753bc4c
Parents: 5738314
Author: sboikov <sb...@gridgain.com>
Authored: Mon Jan 23 15:41:17 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Jan 23 15:47:49 2017 +0300
----------------------------------------------------------------------
.../cache/IgniteCacheOffheapManagerImpl.java | 14 +++++++++++++-
.../internal/processors/cache/database/RowStore.java | 5 ++++-
.../processors/cache/database/freelist/FreeList.java | 6 ++++++
3 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/e18cfe2b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git 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
index 92af4d2..5e6c28b 100644
--- 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
@@ -886,6 +886,12 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple
return name;
}
+ /**
+ * @param oldRow Old row.
+ * @param dataRow New row.
+ * @return {@code True} if it is possible to update old row data.
+ * @throws IgniteCheckedException If failed.
+ */
private boolean canUpdateOldRow(@Nullable CacheDataRow oldRow, DataRow dataRow)
throws IgniteCheckedException {
if (oldRow == null || indexingEnabled)
@@ -938,7 +944,13 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple
assert dataRow.link() != 0 : dataRow;
- old = dataTree.put(dataRow);
+ if (oldRow != null) {
+ old = oldRow;
+
+ dataTree.putx(dataRow);
+ }
+ else
+ old = dataTree.put(dataRow);
if (old == null)
storageSize.incrementAndGet();
http://git-wip-us.apache.org/repos/asf/ignite/blob/e18cfe2b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/RowStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/RowStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/RowStore.java
index 6ea1f39..8d54542 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/RowStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/RowStore.java
@@ -42,6 +42,7 @@ public class RowStore {
/**
* @param cctx Cache context.
+ * @param freeList Free list.
*/
public RowStore(GridCacheContext<?,?> cctx, FreeList freeList) {
assert cctx != null;
@@ -82,8 +83,10 @@ public class RowStore {
}
/**
- * @param row Row.
+ * @param link Row link.
+ * @param row New row data.
* @throws IgniteCheckedException If failed.
+ * @return {@code True} if was able to update row.
*/
public boolean updateRow(long link, CacheDataRow row) throws IgniteCheckedException {
return freeList.updateDataRow(link, row);
http://git-wip-us.apache.org/repos/asf/ignite/blob/e18cfe2b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeList.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeList.java
index b9bc478..d72c5b9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeList.java
@@ -29,6 +29,12 @@ public interface FreeList {
*/
public void insertDataRow(CacheDataRow row) throws IgniteCheckedException;
+ /**
+ * @param link Row link.
+ * @param row New row data.
+ * @return {@code True} if was able to update row.
+ * @throws IgniteCheckedException If failed.
+ */
public boolean updateDataRow(long link, CacheDataRow row) throws IgniteCheckedException;
/**