Kirill Tkalenko created IGNITE-26988:
----------------------------------------

             Summary: Fix exception (Negative position) when trying to write 
meta page at checkpoint
                 Key: IGNITE-26988
                 URL: https://issues.apache.org/jira/browse/IGNITE-26988
             Project: Ignite
          Issue Type: Bug
          Components: storage engines ai3
            Reporter: Kirill Tkalenko
            Assignee: Kirill Tkalenko
             Fix For: 3.2


It was found that if a checkpoint occurs between the start of a rebalance and 
the update of the last applied index and term, the partition meta page will not 
be included in the dirty page list and will not be included in the delta file 
pageIndexes, which will result in an error when trying to write it.

{noformat}
org.apache.ignite.internal.lang.IgniteInternalException: 
java.lang.IllegalArgumentException: Negative position
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.Checkpointer.body(Checkpointer.java:292)
    at 
org.apache.ignite.internal.util.worker.IgniteWorker.run(IgniteWorker.java:97)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.util.concurrent.CompletionException: 
java.lang.IllegalArgumentException: Negative position
    at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
    at 
java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
    at 
java.base/java.util.concurrent.CompletableFuture$BiRelay.tryFire(CompletableFuture.java:1423)
    at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at 
java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2094)
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointPagesWriter.run(CheckpointPagesWriter.java:201)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    ... 1 more
Caused by: java.lang.IllegalArgumentException: Negative position
    at 
java.base/sun.nio.ch.SimpleAsynchronousFileChannelImpl.implWrite(SimpleAsynchronousFileChannelImpl.java:350)
    at 
java.base/sun.nio.ch.AsynchronousFileChannelImpl.write(AsynchronousFileChannelImpl.java:251)
    at org.apache.ignite.internal.fileio.AsyncFileIo.write(AsyncFileIo.java:121)
    at 
org.apache.ignite.internal.fileio.AbstractFileIo.lambda$writeFully$4(AbstractFileIo.java:58)
    at 
org.apache.ignite.internal.fileio.AbstractFileIo.fully(AbstractFileIo.java:107)
    at 
org.apache.ignite.internal.fileio.AbstractFileIo.writeFully(AbstractFileIo.java:58)
    at 
org.apache.ignite.internal.pagememory.persistence.store.AbstractFilePageStoreIo.write(AbstractFilePageStoreIo.java:190)
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointManager.writePageToFilePageStore(CheckpointManager.java:362)
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointPagesWriter.writePartitionMeta(CheckpointPagesWriter.java:439)
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointPagesWriter.writeDirtyPages(CheckpointPagesWriter.java:228)
    at 
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointPagesWriter.run(CheckpointPagesWriter.java:188)
    ... 3 more
{noformat}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to