You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/09/07 13:49:35 UTC
[32/50] [abbrv] ignite git commit: IGNITE-9402 Throws exception if
WALWriter failed during flush buffer. - Fixes #4640.
IGNITE-9402 Throws exception if WALWriter failed during flush buffer. - Fixes #4640.
Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1fd72477
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1fd72477
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1fd72477
Branch: refs/heads/ignite-5960
Commit: 1fd72477e336bc48b2568d58114a2d15f5036d12
Parents: ef4a02d
Author: Anton Kalashnikov <ka...@yandex.ru>
Authored: Wed Sep 5 14:43:47 2018 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Wed Sep 5 14:43:47 2018 +0300
----------------------------------------------------------------------
.../wal/FileWriteAheadLogManager.java | 22 +++++++++++---------
.../IgnitePdsWithIndexingCoreTestSuite.java | 2 ++
2 files changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1fd72477/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
----------------------------------------------------------------------
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 eb5ae95..634cab3 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
@@ -78,7 +78,6 @@ import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
-import org.apache.ignite.internal.processors.cache.persistence.StorageException;
import org.apache.ignite.internal.pagemem.wal.WALIterator;
import org.apache.ignite.internal.pagemem.wal.WALPointer;
import org.apache.ignite.internal.pagemem.wal.record.CheckpointRecord;
@@ -90,12 +89,12 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter
import org.apache.ignite.internal.processors.cache.WalStateManager.WALDisableContext;
import org.apache.ignite.internal.processors.cache.persistence.DataStorageMetricsImpl;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.StorageException;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings;
-import org.apache.ignite.internal.processors.cache.persistence.wal.AbstractWalRecordsIterator.AbstractFileDescriptor;
import org.apache.ignite.internal.processors.cache.persistence.wal.crc.PureJavaCrc32;
import org.apache.ignite.internal.processors.cache.persistence.wal.record.HeaderRecord;
import org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordSerializer;
@@ -2682,7 +2681,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
*
* @param ptr Pointer.
*/
- private void flushOrWait(FileWALPointer ptr) {
+ private void flushOrWait(FileWALPointer ptr) throws IgniteCheckedException {
if (ptr != null) {
// If requested obsolete file index, it must be already flushed by close.
if (ptr.index() != idx)
@@ -2695,7 +2694,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
/**
* @param ptr Pointer.
*/
- private void flush(FileWALPointer ptr) {
+ private void flush(FileWALPointer ptr) throws IgniteCheckedException {
if (ptr == null) { // Unconditional flush.
walWriter.flushAll();
@@ -3275,8 +3274,6 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
/** {@inheritDoc} */
@Override protected void body() {
- Throwable err = null;
-
try {
while (!isCancelled()) {
while (waiters.isEmpty()) {
@@ -3399,21 +3396,21 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
/**
* Forces all made changes to the file.
*/
- void force() {
+ void force() throws IgniteCheckedException {
flushBuffer(FILE_FORCE);
}
/**
* Closes file.
*/
- void close() {
+ void close() throws IgniteCheckedException {
flushBuffer(FILE_CLOSE);
}
/**
* Flushes all data from the buffer.
*/
- void flushAll() {
+ void flushAll() throws IgniteCheckedException {
flushBuffer(UNCONDITIONAL_FLUSH);
}
@@ -3421,7 +3418,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
* @param expPos Expected position.
*/
@SuppressWarnings("ForLoopReplaceableByForEach")
- void flushBuffer(long expPos) {
+ void flushBuffer(long expPos) throws IgniteCheckedException {
if (mmap)
return;
@@ -3447,6 +3444,11 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
if (val == Long.MIN_VALUE) {
waiters.remove(t);
+ Throwable walWriterError = walWriter.err;
+
+ if (walWriterError != null)
+ throw new IgniteCheckedException("Flush buffer failed.", walWriterError);
+
return;
}
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/1fd72477/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
index 491bab7..2989ccd 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
@@ -72,7 +72,9 @@ public class IgnitePdsWithIndexingCoreTestSuite extends TestSuite {
suite.addTestSuite(IgnitePdsTxHistoricalRebalancingTest.class);
suite.addTestSuite(IgniteWalRecoveryPPCTest.class);
+
suite.addTestSuite(IgnitePdsDiskErrorsRecoveringTest.class);
+
suite.addTestSuite(IgnitePdsCacheDestroyDuringCheckpointTest.class);
suite.addTestSuite(IgnitePdsBinaryMetadataOnClusterRestartTest.class);