You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dg...@apache.org on 2019/08/12 11:53:59 UTC

[ignite] 02/02: IGNITE-12060 Fixed incorrect row size calculation, lead to tree corruption.

This is an automated email from the ASF dual-hosted git repository.

dgovorukhin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit d54a0bae02b85591a8a4ced456234b28032b5c77
Author: Dmitriy Govorukhin <dm...@gmail.com>
AuthorDate: Mon Aug 12 14:53:26 2019 +0300

    IGNITE-12060 Fixed incorrect row size calculation, lead to tree corruption.
---
 .../internal/processors/cache/IgniteCacheOffheapManagerImpl.java      | 4 ++++
 1 file changed, 4 insertions(+)

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 ac08189..57cca44 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
@@ -1614,6 +1614,10 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
 
             int oldLen = oldRow.size();
 
+            // Use grp.sharedGroup() flag since it is possible cacheId is not yet set here.
+            if (!grp.storeCacheIdInDataPage() && grp.sharedGroup() && oldRow.cacheId() != CU.UNDEFINED_CACHE_ID)
+                oldLen -= 4;
+
             if (oldLen > updateValSizeThreshold)
                 return false;