You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ib...@apache.org on 2021/05/25 07:43:13 UTC
[ignite] branch master updated: IGNITE-14771 Fixed deadlock in
GridCacheDataStore initialization. (#9121)
This is an automated email from the ASF dual-hosted git repository.
ibessonov 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 905e573 IGNITE-14771 Fixed deadlock in GridCacheDataStore initialization. (#9121)
905e573 is described below
commit 905e573bc33841318a6cc94fc30f3f37ae4a6d7f
Author: ibessonov <be...@gmail.com>
AuthorDate: Tue May 25 10:42:47 2021 +0300
IGNITE-14771 Fixed deadlock in GridCacheDataStore initialization. (#9121)
---
.../processors/cache/persistence/GridCacheOffheapManager.java | 8 +++++---
.../processors/cache/persistence/checkpoint/Checkpointer.java | 4 ++--
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
index 9dbf87a..66f2629 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
@@ -2001,11 +2001,11 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
AtomicLong pageListCacheLimit = ((GridCacheDatabaseSharedManager) ctx.database()).pageListCacheLimitHolder(grp.dataRegion());
- if (init.compareAndSet(false, true)) {
- IgniteCacheDatabaseSharedManager dbMgr = ctx.database();
+ IgniteCacheDatabaseSharedManager dbMgr = ctx.database();
- dbMgr.checkpointReadLock();
+ dbMgr.checkpointReadLock();
+ if (init.compareAndSet(false, true)) {
try {
Metas metas = getOrAllocatePartitionMetas();
@@ -2225,6 +2225,8 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
}
}
else {
+ dbMgr.checkpointReadUnlock();
+
U.await(latch);
delegate0 = delegate;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java
index a7ac809..21032a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java
@@ -363,13 +363,13 @@ public class Checkpointer extends GridWorker {
long nextNanos = System.nanoTime() + U.millisToNanos(delayFromNow);
- if (sched.nextCpNanos() <= nextNanos)
+ if (sched.nextCpNanos() - nextNanos <= 0)
return sched;
synchronized (this) {
sched = scheduledCp;
- if (sched.nextCpNanos() > nextNanos) {
+ if (sched.nextCpNanos() - nextNanos > 0) {
sched.reason(reason);
sched.nextCpNanos(nextNanos);