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 2026/01/22 11:02:49 UTC

(ignite-3) branch main updated: IGNITE-27638 Fix WI list corruption on transaction commit/abort (#7460)

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

ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 66936177599 IGNITE-27638 Fix WI list corruption on transaction commit/abort (#7460)
66936177599 is described below

commit 6693617759952daa5d7ec4a88f9dba4cde4aa288
Author: Ivan Bessonov <be...@gmail.com>
AuthorDate: Thu Jan 22 14:02:42 2026 +0300

    IGNITE-27638 Fix WI list corruption on transaction commit/abort (#7460)
---
 .../storage/pagememory/mv/AbortWriteInvokeClosure.java      | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbortWriteInvokeClosure.java b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbortWriteInvokeClosure.java
index 6aa676b29cc..8eae2b4dcfd 100644
--- a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbortWriteInvokeClosure.java
+++ b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbortWriteInvokeClosure.java
@@ -110,15 +110,6 @@ class AbortWriteInvokeClosure implements InvokeClosure<VersionChain> {
         return operationType;
     }
 
-    @Override
-    public void onUpdate() {
-        if (toRemove != null) {
-            // We don't zero out removed write intent's WI links because we already unlinked it everywhere except for WI list itself,
-            // so no one can read its WI links, and we are going to remove it from WI list under the WI list lock.
-            toRemove.operations().removeFromWriteIntentsList(storage, this::abortWriteInfo);
-        }
-    }
-
     /**
      * Method to call after {@link BplusTree#invoke(Object, Object, InvokeClosure)} has completed.
      */
@@ -127,6 +118,10 @@ class AbortWriteInvokeClosure implements InvokeClosure<VersionChain> {
                 abortWriteInfo() + ", toRemove=" + toRemove + ", op=" + operationType;
 
         if (toRemove != null) {
+            // We don't zero out removed write intent's WI links because we already unlinked it everywhere except for WI list itself,
+            // so no one can read its WI links, and we are going to remove it from WI list under the WI list lock.
+            toRemove.operations().removeFromWriteIntentsList(storage, this::abortWriteInfo);
+
             storage.removeRowVersion(toRemove);
         }
     }