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