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);
}
}