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/09/05 13:09:23 UTC
[ignite] branch ignite-2.7.6 updated: IGNITE-12127 Fixed WAL writer
may close file IO with unflushed changes when MMAP is disabled - Fixes
#6840.
This is an automated email from the ASF dual-hosted git repository.
dgovorukhin pushed a commit to branch ignite-2.7.6
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/ignite-2.7.6 by this push:
new 402c945 IGNITE-12127 Fixed WAL writer may close file IO with unflushed changes when MMAP is disabled - Fixes #6840.
402c945 is described below
commit 402c9450dafbb201708f66d8bdab0ade0b87bd4f
Author: Dmitriy Govorukhin <dm...@gmail.com>
AuthorDate: Thu Sep 5 10:15:21 2019 +0300
IGNITE-12127 Fixed WAL writer may close file IO with unflushed changes when MMAP is disabled - Fixes #6840.
(cherry picked from commit a13337d94755d7e1cc097c6f00311552fea25ae6)
---
.../cache/persistence/wal/FileWriteAheadLogManager.java | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
index e958db7..47473be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
@@ -129,6 +129,7 @@ import org.apache.ignite.thread.IgniteThread;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import static java.lang.Long.MAX_VALUE;
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.READ;
import static java.nio.file.StandardOpenOption.WRITE;
@@ -2616,9 +2617,10 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
return;
}
- assert ptr.index() == getSegmentId();
+ assert ptr.index() == getSegmentId() : "Pointer segment idx is not equals to current write segment idx. " +
+ "ptr=" + ptr + " segmetntId=" + getSegmentId();
- walWriter.flushBuffer(ptr.fileOffset());
+ walWriter.flushBuffer(ptr.fileOffset() + ptr.length());
}
/**
@@ -3243,7 +3245,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
}
}
else {
- unparkWaiters(Long.MAX_VALUE);
+ unparkWaiters(MAX_VALUE);
return;
}
@@ -3274,7 +3276,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
err = e;
- unparkWaiters(Long.MAX_VALUE);
+ unparkWaiters(MAX_VALUE);
return;
}
@@ -3308,7 +3310,9 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
finally {
seg.release();
- long p = pos <= UNCONDITIONAL_FLUSH || err != null ? Long.MAX_VALUE : currentHandle().written;
+ boolean unparkAll = (pos == UNCONDITIONAL_FLUSH || pos == FILE_CLOSE) || err != null;
+
+ long p = unparkAll ? MAX_VALUE : currentHandle().written;
unparkWaiters(p);
}
@@ -3319,7 +3323,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
err = t;
}
finally {
- unparkWaiters(Long.MAX_VALUE);
+ unparkWaiters(MAX_VALUE);
if (err == null && !isCancelled)
err = new IllegalStateException("Worker " + name() + " is terminated unexpectedly");