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/07/06 11:28:08 UTC

[9/9] ignite git commit: ignite-5075 Fixed size calculation

ignite-5075 Fixed size calculation


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/38a5cb85
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/38a5cb85
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/38a5cb85

Branch: refs/heads/ignite-5075-1
Commit: 38a5cb85d6d94391d7e0d510b00737322459434a
Parents: c396b0b
Author: sboikov <sb...@gridgain.com>
Authored: Thu Jul 6 14:27:51 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Thu Jul 6 14:27:51 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/IgniteCacheOffheapManagerImpl.java  |  7 +++++--
 .../cache/persistence/freelist/FreeListImpl.java         | 11 ++++++-----
 2 files changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/38a5cb85/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 b51fc10..6d16b60 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
@@ -1179,12 +1179,15 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
             if (oldRow.expireTime() != dataRow.expireTime())
                 return false;
 
-            int oldLen = FreeListImpl.getRowSize(oldRow);
+            // Use grp.sharedGroup() flag since it is possible cacheId is not yet set here.
+            boolean sizeWithCacheId = grp.sharedGroup();
+
+            int oldLen = FreeListImpl.getRowSize(oldRow, sizeWithCacheId);
 
             if (oldLen > updateValSizeThreshold)
                 return false;
 
-            int newLen = FreeListImpl.getRowSize(dataRow);
+            int newLen = FreeListImpl.getRowSize(dataRow, sizeWithCacheId);
 
             return oldLen == newLen;
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/38a5cb85/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
index 139c6f3..844bc02 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
@@ -101,7 +101,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
             throws IgniteCheckedException {
             DataPageIO io = (DataPageIO)iox;
 
-            int rowSize = getRowSize(row);
+            int rowSize = getRowSize(row, row.cacheId() != 0);
 
             boolean updated = io.updateRow(pageAddr, itemId, pageSize(), null, row, rowSize);
 
@@ -147,7 +147,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
             throws IgniteCheckedException {
             DataPageIO io = (DataPageIO)iox;
 
-            int rowSize = getRowSize(row);
+            int rowSize = getRowSize(row, row.cacheId() != 0);
             int oldFreeSpace = io.getFreeSpace(pageAddr);
 
             assert oldFreeSpace > 0 : oldFreeSpace;
@@ -453,7 +453,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
 
     /** {@inheritDoc} */
     @Override public void insertDataRow(CacheDataRow row) throws IgniteCheckedException {
-        int rowSize = getRowSize(row);
+        int rowSize = getRowSize(row, row.cacheId() != 0);
 
         int written = 0;
 
@@ -579,17 +579,18 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
 
     /**
      * @param row Row.
+     * @param withCacheId If {@code true} adds cache ID size.
      * @return Entry size on page.
      * @throws IgniteCheckedException If failed.
      */
-    public static int getRowSize(CacheDataRow row) throws IgniteCheckedException {
+    public static int getRowSize(CacheDataRow row, boolean withCacheId) throws IgniteCheckedException {
         KeyCacheObject key = row.key();
         CacheObject val = row.value();
 
         int keyLen = key.valueBytesLength(null);
         int valLen = val.valueBytesLength(null);
 
-        return keyLen + valLen + CacheVersionIO.size(row.version(), false) + 8 + (row.cacheId() == 0 ? 0 : 4);
+        return keyLen + valLen + CacheVersionIO.size(row.version(), false) + 8 + (withCacheId ? 4 : 0);
     }
 
     /** {@inheritDoc} */