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);
}
}