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 <[email protected]>
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);
         }
     }

Reply via email to