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