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 2019/12/30 15:57:34 UTC

[ignite] branch master updated: IGNITE-12486 Index calculation in FileWriteAheadLogManager#rollOver fixed.

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

agura 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 8d7363d  IGNITE-12486 Index calculation in FileWriteAheadLogManager#rollOver fixed.
8d7363d is described below

commit 8d7363da3c03993c8a50884788595674a65d6e7f
Author: ibessonov <be...@gmail.com>
AuthorDate: Mon Dec 30 18:57:05 2019 +0300

    IGNITE-12486 Index calculation in FileWriteAheadLogManager#rollOver fixed.
    
    Signed-off-by: Andrey Gura <ag...@apache.org>
---
 .../processors/cache/persistence/wal/AbstractWalRecordsIterator.java | 5 ++++-
 .../processors/cache/persistence/wal/FileWriteAheadLogManager.java   | 2 +-
 .../cache/persistence/wal/filehandle/FileWriteHandleImpl.java        | 2 +-
 .../cache/persistence/wal/filehandle/FsyncFileWriteHandle.java       | 2 +-
 .../processors/cache/persistence/db/wal/WalCompactionTest.java       | 2 +-
 5 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java
index 0392d7e..ce9b992 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java
@@ -275,7 +275,10 @@ public abstract class AbstractWalRecordsIterator
             if (e instanceof WalSegmentTailReachedException) {
                 throw new WalSegmentTailReachedException(
                     "WAL segment tail reached. [idx=" + hnd.idx() +
-                        ", isWorkDir=" + hnd.workDir() + ", serVer=" + hnd.ser() + "]", e);
+                        ", isWorkDir=" + hnd.workDir() + ", serVer=" + hnd.ser() +
+                        ", actualFilePtr=" + actualFilePtr + ']',
+                    e
+                );
             }
 
             if (!(e instanceof SegmentEofException) && !(e instanceof EOFException)) {
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 c22ed28..a09de37 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
@@ -1252,7 +1252,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl
                 metrics.onWallRollOver();
 
             if (switchSegmentRecordOffset != null) {
-                int idx = (int)((cur.getSegmentId() + 1) % dsCfg.getWalSegments());
+                int idx = (int)(cur.getSegmentId() % dsCfg.getWalSegments());
 
                 switchSegmentRecordOffset.set(idx, hnd.getSwitchSegmentRecordOffset());
             }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileWriteHandleImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileWriteHandleImpl.java
index 5b9f597..c0763a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileWriteHandleImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileWriteHandleImpl.java
@@ -489,7 +489,7 @@ class FileWriteHandleImpl extends AbstractFileHandle implements FileWriteHandle
 
                     int switchSegmentRecSize = backwardSerializer.size(segmentRecord);
 
-                    if (rollOver && written < (maxWalSegmentSize - switchSegmentRecSize)) {
+                    if (rollOver && written + switchSegmentRecSize < maxWalSegmentSize) {
                         segmentRecord.size(switchSegmentRecSize);
 
                         WALPointer segRecPtr = addRecord(segmentRecord);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
index b1c7585..d8f9ea5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
@@ -640,7 +640,7 @@ class FsyncFileWriteHandle extends AbstractFileHandle implements FileWriteHandle
 
                         int switchSegmentRecSize = backwardSerializer.size(segmentRecord);
 
-                        if (rollOver && written < (maxSegmentSize - switchSegmentRecSize)) {
+                        if (rollOver && written + switchSegmentRecSize < maxSegmentSize) {
                             final ByteBuffer buf = ByteBuffer.allocate(switchSegmentRecSize);
 
                             segmentRecord.position(new FileWALPointer(getSegmentId(), (int)written, switchSegmentRecSize));
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WalCompactionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WalCompactionTest.java
index a8f6014..1018f9e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WalCompactionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WalCompactionTest.java
@@ -291,7 +291,7 @@ public class WalCompactionTest extends GridCommonAbstractTest {
         IgniteConfiguration icfg = getConfiguration(getTestIgniteInstanceName(0));
 
         icfg.getDataStorageConfiguration().setWalSegmentSize(300_000_000);
-        icfg.getDataStorageConfiguration().setWalSegments(1);
+        icfg.getDataStorageConfiguration().setWalSegments(2);
 
         IgniteEx ig = (IgniteEx)startGrid(getTestIgniteInstanceName(0), optimize(icfg), null);