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

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


The following commit(s) were added to refs/heads/master by this push:
     new e35f91f59ef IGNITE-21637 Fix integer overflow in page eviction 
trackers (#11261)
e35f91f59ef is described below

commit e35f91f59efd0fc8721aedc7b9029664c80d1eff
Author: Ilya Shishkov <[email protected]>
AuthorDate: Thu Mar 7 11:18:06 2024 +0300

    IGNITE-21637 Fix integer overflow in page eviction trackers (#11261)
---
 .../evict/Random2LruPageEvictionTracker.java         | 20 ++++++++++----------
 .../evict/RandomLruPageEvictionTracker.java          | 12 ++++++------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/Random2LruPageEvictionTracker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/Random2LruPageEvictionTracker.java
index 54afb346ac6..8561b9d5342 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/Random2LruPageEvictionTracker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/Random2LruPageEvictionTracker.java
@@ -69,9 +69,9 @@ public class Random2LruPageEvictionTracker extends 
PageAbstractEvictionTracker {
 
     /** {@inheritDoc} */
     @Override public void start() throws IgniteException {
-        trackingArrPtr = GridUnsafe.allocateMemory(trackingSize * 8l);
+        trackingArrPtr = GridUnsafe.allocateMemory(trackingSize * 8L);
 
-        GridUnsafe.zeroMemory(trackingArrPtr, trackingSize * 8l);
+        GridUnsafe.zeroMemory(trackingArrPtr, trackingSize * 8L);
     }
 
     /** {@inheritDoc} */
@@ -92,15 +92,15 @@ public class Random2LruPageEvictionTracker extends 
PageAbstractEvictionTracker {
         do {
             int trackingIdx = trackingIdx(pageIdx);
 
-            int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8);
+            int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8L);
 
-            int secondTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8 + 4);
+            int secondTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8L + 4);
 
             if (firstTs <= secondTs)
-                success = GridUnsafe.compareAndSwapInt(null, trackingArrPtr + 
trackingIdx * 8, firstTs, (int)latestTs);
+                success = GridUnsafe.compareAndSwapInt(null, trackingArrPtr + 
trackingIdx * 8L, firstTs, (int)latestTs);
             else {
                 success = GridUnsafe.compareAndSwapInt(
-                    null, trackingArrPtr + trackingIdx * 8 + 4, secondTs, 
(int)latestTs);
+                    null, trackingArrPtr + trackingIdx * 8L + 4, secondTs, 
(int)latestTs);
             }
         } while (!success);
     }
@@ -123,9 +123,9 @@ public class Random2LruPageEvictionTracker extends 
PageAbstractEvictionTracker {
             while (dataPagesCnt < SAMPLE_SIZE) {
                 int trackingIdx = rnd.nextInt(trackingSize);
 
-                int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8);
+                int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8L);
 
-                int secondTs = GridUnsafe.getIntVolatile(null, trackingArrPtr 
+ trackingIdx * 8 + 4);
+                int secondTs = GridUnsafe.getIntVolatile(null, trackingArrPtr 
+ trackingIdx * 8L + 4);
 
                 int minTs = Math.min(firstTs, secondTs);
 
@@ -164,7 +164,7 @@ public class Random2LruPageEvictionTracker extends 
PageAbstractEvictionTracker {
     @Override protected boolean checkTouch(long pageId) {
         int trackingIdx = trackingIdx(PageIdUtils.pageIndex(pageId));
 
-        int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8);
+        int firstTs = GridUnsafe.getIntVolatile(null, trackingArrPtr + 
trackingIdx * 8L);
 
         return firstTs != 0;
     }
@@ -175,6 +175,6 @@ public class Random2LruPageEvictionTracker extends 
PageAbstractEvictionTracker {
 
         int trackingIdx = trackingIdx(pageIdx);
 
-        GridUnsafe.putLongVolatile(null, trackingArrPtr + trackingIdx * 8, 0L);
+        GridUnsafe.putLongVolatile(null, trackingArrPtr + trackingIdx * 8L, 
0L);
     }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/RandomLruPageEvictionTracker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/RandomLruPageEvictionTracker.java
index e926a3386d6..ac57bd39236 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/RandomLruPageEvictionTracker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/evict/RandomLruPageEvictionTracker.java
@@ -71,9 +71,9 @@ public class RandomLruPageEvictionTracker extends 
PageAbstractEvictionTracker {
 
     /** {@inheritDoc} */
     @Override public void start() throws IgniteException {
-        trackingArrPtr = GridUnsafe.allocateMemory(trackingSize * 4l);
+        trackingArrPtr = GridUnsafe.allocateMemory(trackingSize * 4L);
 
-        GridUnsafe.zeroMemory(trackingArrPtr, trackingSize * 4l);
+        GridUnsafe.zeroMemory(trackingArrPtr, trackingSize * 4L);
     }
 
     /** {@inheritDoc} */
@@ -89,7 +89,7 @@ public class RandomLruPageEvictionTracker extends 
PageAbstractEvictionTracker {
 
         assert res >= 0 && res < Integer.MAX_VALUE;
 
-        GridUnsafe.putIntVolatile(null, trackingArrPtr + trackingIdx(pageIdx) 
* 4, (int)res);
+        GridUnsafe.putIntVolatile(null, trackingArrPtr + trackingIdx(pageIdx) 
* 4L, (int)res);
     }
 
     /** {@inheritDoc} */
@@ -110,7 +110,7 @@ public class RandomLruPageEvictionTracker extends 
PageAbstractEvictionTracker {
             while (dataPagesCnt < SAMPLE_SIZE) {
                 int sampleTrackingIdx = rnd.nextInt(trackingSize);
 
-                int compactTs = GridUnsafe.getIntVolatile(null, trackingArrPtr 
+ sampleTrackingIdx * 4);
+                int compactTs = GridUnsafe.getIntVolatile(null, trackingArrPtr 
+ sampleTrackingIdx * 4L);
 
                 if (compactTs != 0) {
                     // We chose data page with at least one touch.
@@ -145,7 +145,7 @@ public class RandomLruPageEvictionTracker extends 
PageAbstractEvictionTracker {
     @Override protected boolean checkTouch(long pageId) {
         int trackingIdx = trackingIdx(PageIdUtils.pageIndex(pageId));
 
-        int ts = GridUnsafe.getIntVolatile(null, trackingArrPtr + trackingIdx 
* 4);
+        int ts = GridUnsafe.getIntVolatile(null, trackingArrPtr + trackingIdx 
* 4L);
 
         return ts != 0;
     }
@@ -154,6 +154,6 @@ public class RandomLruPageEvictionTracker extends 
PageAbstractEvictionTracker {
     @Override public void forgetPage(long pageId) {
         int pageIdx = PageIdUtils.pageIndex(pageId);
 
-        GridUnsafe.putIntVolatile(null, trackingArrPtr + trackingIdx(pageIdx) 
* 4, 0);
+        GridUnsafe.putIntVolatile(null, trackingArrPtr + trackingIdx(pageIdx) 
* 4L, 0);
     }
 }

Reply via email to