This is an automated email from the ASF dual-hosted git repository.
namelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new fa2c7c606eb IGNITE-28276 Remove TxLockList (#12945)
fa2c7c606eb is described below
commit fa2c7c606ebdc0eb06b82c974f90fdc92131f4ed
Author: Dmitry Werner <[email protected]>
AuthorDate: Fri Mar 27 12:37:43 2026 +0500
IGNITE-28276 Remove TxLockList (#12945)
---
.../communication/GridIoMessageFactory.java | 3 -
.../cache/transactions/TxDeadlockDetection.java | 24 +++----
.../processors/cache/transactions/TxLockList.java | 73 ----------------------
.../cache/transactions/TxLocksResponse.java | 19 +++---
.../main/resources/META-INF/classnames.properties | 1 -
5 files changed, 21 insertions(+), 99 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 05c296ba618..fad3e7a4b07 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -264,8 +264,6 @@ import
org.apache.ignite.internal.processors.cache.transactions.IgniteTxKeySeria
import
org.apache.ignite.internal.processors.cache.transactions.TxEntryValueHolder;
import
org.apache.ignite.internal.processors.cache.transactions.TxEntryValueHolderSerializer;
import org.apache.ignite.internal.processors.cache.transactions.TxLock;
-import org.apache.ignite.internal.processors.cache.transactions.TxLockList;
-import
org.apache.ignite.internal.processors.cache.transactions.TxLockListSerializer;
import
org.apache.ignite.internal.processors.cache.transactions.TxLockSerializer;
import org.apache.ignite.internal.processors.cache.transactions.TxLocksRequest;
import
org.apache.ignite.internal.processors.cache.transactions.TxLocksRequestSerializer;
@@ -397,7 +395,6 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)-43, IgniteIoTestMessage::new);
factory.register((short)-36, GridDhtAtomicSingleUpdateRequest::new,
new GridDhtAtomicSingleUpdateRequestSerializer());
factory.register((short)-27, GridDhtTxOnePhaseCommitAckRequest::new,
new GridDhtTxOnePhaseCommitAckRequestSerializer());
- factory.register((short)-26, TxLockList::new, new
TxLockListSerializer());
factory.register((short)-25, TxLock::new, new TxLockSerializer());
factory.register((short)-24, TxLocksRequest::new, new
TxLocksRequestSerializer());
factory.register((short)-23, TxLocksResponse::new, new
TxLocksResponseSerializer());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
index 1febf364220..a5cae1194cf 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetection.java
@@ -268,14 +268,14 @@ public class TxDeadlockDetection {
if (topVer == null) // Tx manager already stopped
onDone();
else
- map(keys, Collections.<IgniteTxKey, TxLockList>emptyMap());
+ map(keys, Collections.emptyMap());
}
/**
* @param keys Keys.
* @param txLocks Tx locks.
*/
- private void map(@Nullable Set<IgniteTxKey> keys, Map<IgniteTxKey,
TxLockList> txLocks) {
+ private void map(@Nullable Set<IgniteTxKey> keys, Map<IgniteTxKey,
List<TxLock>> txLocks) {
mapTxKeys(keys, txLocks);
UUID nodeId = nodesQueue.pollFirst();
@@ -328,9 +328,9 @@ public class TxDeadlockDetection {
* @param txLocks Tx locks.
*/
@SuppressWarnings("ForLoopReplaceableByForEach")
- private void mapTxKeys(@Nullable Set<IgniteTxKey> txKeys,
Map<IgniteTxKey, TxLockList> txLocks) {
- for (Map.Entry<IgniteTxKey, TxLockList> e : txLocks.entrySet()) {
- List<TxLock> locks = e.getValue().transactionLocks();
+ private void mapTxKeys(@Nullable Set<IgniteTxKey> txKeys,
Map<IgniteTxKey, List<TxLock>> txLocks) {
+ for (Map.Entry<IgniteTxKey, List<TxLock>> e : txLocks.entrySet()) {
+ List<TxLock> locks = e.getValue();
for (int i = 0; i < locks.size(); i++) {
TxLock txLock = locks.get(i);
@@ -415,18 +415,18 @@ public class TxDeadlockDetection {
* @param res Tx locks.
*/
private void merge(TxLocksResponse res) {
- Map<IgniteTxKey, TxLockList> txLocks = res.txLocks();
+ Map<IgniteTxKey, List<TxLock>> txLocks = res.txLocks();
if (txLocks == null || txLocks.isEmpty())
return;
- for (Map.Entry<IgniteTxKey, TxLockList> e : txLocks.entrySet()) {
+ for (Map.Entry<IgniteTxKey, List<TxLock>> e : txLocks.entrySet()) {
IgniteTxKey txKey = e.getKey();
- TxLockList lockList = e.getValue();
+ List<TxLock> lockList = e.getValue();
if (lockList != null && !lockList.isEmpty()) {
- for (TxLock lock : lockList.transactionLocks()) {
+ for (TxLock lock : lockList) {
if (lock.owner() || lock.candiate()) {
if (txs.get(lock.txId()) == null)
txs.put(lock.txId(), new
T2<>(lock.nearNodeId(), lock.threadId()));
@@ -458,15 +458,15 @@ public class TxDeadlockDetection {
/**
* @param txLocks Tx locks.
*/
- private void updateWaitForGraph(Map<IgniteTxKey, TxLockList> txLocks) {
+ private void updateWaitForGraph(Map<IgniteTxKey, List<TxLock>>
txLocks) {
if (txLocks == null || txLocks.isEmpty())
return;
- for (Map.Entry<IgniteTxKey, TxLockList> e : txLocks.entrySet()) {
+ for (Map.Entry<IgniteTxKey, List<TxLock>> e : txLocks.entrySet()) {
GridCacheVersion txOwner = null;
- for (TxLock lock : e.getValue().transactionLocks()) {
+ for (TxLock lock : e.getValue()) {
if (lock.owner() && txOwner == null) {
// Actually we can get lock list with more than one
owner. In this case ignore all owners
// except first because likely the first owner was
cause of deadlock.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLockList.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLockList.java
deleted file mode 100644
index c0214cd163a..00000000000
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLockList.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.cache.transactions;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.internal.util.tostring.GridToStringInclude;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.plugin.extensions.communication.Message;
-
-/**
- * List of transaction locks for particular key.
- */
-public class TxLockList implements Message {
- /** Tx locks. */
- @GridToStringInclude
- @Order(0)
- List<TxLock> txLocks = new ArrayList<>();
-
- /**
- * Default constructor.
- */
- public TxLockList() {
- // No-op.
- }
-
- /**
- * @return Lock list.
- */
- public List<TxLock> transactionLocks() {
- return txLocks;
- }
-
- /**
- * @param txLock Tx lock.
- */
- public void add(TxLock txLock) {
- txLocks.add(txLock);
- }
-
- /**
- * @return {@code True} if lock list is empty.
- */
- public boolean isEmpty() {
- return txLocks.isEmpty();
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(TxLockList.class, this);
- }
-
- /** {@inheritDoc} */
- @Override public short directType() {
- return -26;
- }
-}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLocksResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLocksResponse.java
index 961a2265f9e..0b03c88d652 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLocksResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxLocksResponse.java
@@ -17,8 +17,10 @@
package org.apache.ignite.internal.processors.cache.transactions;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.ignite.IgniteCheckedException;
@@ -40,7 +42,7 @@ public class TxLocksResponse extends GridCacheMessage {
/** Locks for near txKeys of near transactions. */
@GridToStringInclude
- private final Map<IgniteTxKey, TxLockList> nearTxKeyLocks = new
HashMap<>();
+ private final Map<IgniteTxKey, List<TxLock>> nearTxKeyLocks = new
HashMap<>();
/** Remote keys involved into transactions. Doesn't include near keys. */
@GridToStringInclude
@@ -59,7 +61,7 @@ public class TxLocksResponse extends GridCacheMessage {
/** Array of locksArr from {@link #nearTxKeyLocks}. Used during
marshalling and unmarshalling. */
@GridToStringExclude
@Order(3)
- TxLockList[] locksArr;
+ List<TxLock>[] locksArr;
/**
* Default constructor.
@@ -85,7 +87,7 @@ public class TxLocksResponse extends GridCacheMessage {
/**
* @return Lock lists for all tx nearTxKeysArr.
*/
- public Map<IgniteTxKey, TxLockList> txLocks() {
+ public Map<IgniteTxKey, List<TxLock>> txLocks() {
return nearTxKeyLocks;
}
@@ -93,7 +95,7 @@ public class TxLocksResponse extends GridCacheMessage {
* @param txKey Tx key.
* @return Lock list for given tx key.
*/
- public TxLockList txLocks(IgniteTxKey txKey) {
+ public List<TxLock> txLocks(IgniteTxKey txKey) {
return nearTxKeyLocks.get(txKey);
}
@@ -102,10 +104,7 @@ public class TxLocksResponse extends GridCacheMessage {
* @param txLock Tx lock.
*/
public void addTxLock(IgniteTxKey txKey, TxLock txLock) {
- TxLockList lockList = nearTxKeyLocks.get(txKey);
-
- if (lockList == null)
- nearTxKeyLocks.put(txKey, lockList = new TxLockList());
+ List<TxLock> lockList = nearTxKeyLocks.computeIfAbsent(txKey, k -> new
ArrayList<>());
lockList.add(txLock);
}
@@ -145,11 +144,11 @@ public class TxLocksResponse extends GridCacheMessage {
int len = nearTxKeyLocks.size();
nearTxKeysArr = new IgniteTxKey[len];
- locksArr = new TxLockList[len];
+ locksArr = (List<TxLock>[])new List[len];
int i = 0;
- for (Map.Entry<IgniteTxKey, TxLockList> entry :
nearTxKeyLocks.entrySet()) {
+ for (Map.Entry<IgniteTxKey, List<TxLock>> entry :
nearTxKeyLocks.entrySet()) {
IgniteTxKey key = entry.getKey();
key.prepareMarshal(ctx.cacheContext(key.cacheId()));
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties
b/modules/core/src/main/resources/META-INF/classnames.properties
index 03bdf2e6e8a..f16695c2d12 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1451,7 +1451,6 @@
org.apache.ignite.internal.processors.cache.transactions.TxCollisionsDumpSetting
org.apache.ignite.internal.processors.cache.transactions.TxDeadlockDetection$UniqueDeque
org.apache.ignite.internal.processors.cache.transactions.TxEntryValueHolder
org.apache.ignite.internal.processors.cache.transactions.TxLock
-org.apache.ignite.internal.processors.cache.transactions.TxLockList
org.apache.ignite.internal.processors.cache.transactions.TxLocksRequest
org.apache.ignite.internal.processors.cache.transactions.TxLocksResponse
org.apache.ignite.internal.processors.cache.verify.GridNotIdleException