Denis Chudov created IGNITE-28309:
-------------------------------------
Summary: Remove calls of IgniteStringFormatter from hot path
Key: IGNITE-28309
URL: https://issues.apache.org/jira/browse/IGNITE-28309
Project: Ignite
Issue Type: Bug
Reporter: Denis Chudov
Since sometimes a lot of lock exceptions may be called on hot path, this
process should be optimized.
{code:java}
void java.lang.Thread.run() 1 100 % void java.lang.Thread.runWith(Object,
Runnable) 1 100 % void java.util.concurrent.ThreadPoolExecutor$Worker.run()
1 100 % void
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
1 100 % void
org.apache.ignite.internal.replicator.ReplicaService$$Lambda.0x0000000800f9c228.run()
1 100 % void
org.apache.ignite.internal.replicator.ReplicaService.lambda$sendToReplicaRaw$6(CompletableFuture,
ErrorReplicaResponse) 1 100 % boolean
java.util.concurrent.CompletableFuture.completeExceptionally(Throwable) 1 100
% void java.util.concurrent.CompletableFuture.postComplete() 1 100 %
CompletableFuture java.util.concurrent.CompletableFuture$UniHandle.tryFire(int)
1 100 % boolean java.util.concurrent.CompletableFuture.uniHandle(Object,
BiFunction, CompletableFuture$UniHandle) 1 100 % Object
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl$$Lambda.0x0000000801167068.apply(Object,
Object) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.lambda$trackingInvoke$13(int,
InternalTransaction, int, ReplicaRequest, PendingTxPartitionEnlistment,
BiPredicate, Object, Throwable) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.storage.InternalTableImpl.trackingInvoke(InternalTransaction,
int, Function, boolean, PendingTxPartitionEnlistment, BiPredicate, int) 1
100 % CompletableFuture
org.apache.ignite.internal.replicator.ReplicaService.invoke(String,
ReplicaRequest) 1 100 % CompletableFuture
org.apache.ignite.internal.replicator.ReplicaService.sendToReplica(String,
ReplicaRequest) 1 100 % CompletableFuture
org.apache.ignite.internal.replicator.ReplicaService.sendToReplicaRaw(String,
ReplicaRequest) 1 100 % CompletableFuture
org.apache.ignite.internal.network.MessagingService.invoke(String,
NetworkMessage, long) 1 100 % CompletableFuture
org.apache.ignite.internal.network.wrapper.JumpToExecutorByConsistentIdAfterSend.invoke(String,
ChannelType, NetworkMessage, long) 1 100 % CompletableFuture
org.apache.ignite.internal.network.DefaultMessagingService.invoke(String,
ChannelType, NetworkMessage, long) 1 100 % CompletableFuture
org.apache.ignite.internal.network.DefaultMessagingService.invoke0(InternalClusterNode,
ChannelType, NetworkMessage, long, boolean) 1 100 % void
org.apache.ignite.internal.network.DefaultMessagingService.sendToSelf(NetworkMessage,
Long) 1 100 % void
org.apache.ignite.internal.replicator.ReplicaManager$$Lambda.0x0000000800486c98.onReceived(NetworkMessage,
InternalClusterNode, Long) 1 100 % void
org.apache.ignite.internal.replicator.ReplicaManager.onReplicaMessageReceived(NetworkMessage,
InternalClusterNode, Long) 1 100 % void
org.apache.ignite.internal.replicator.ReplicaManager.handleReplicaRequest(ReplicaRequest,
InternalClusterNode, Long) 1 100 % CompletableFuture
org.apache.ignite.internal.replicator.ZonePartitionReplicaImpl.processRequest(ReplicaRequest,
UUID) 1 100 % CompletableFuture
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.invoke(ReplicaRequest,
UUID) 1 100 % CompletableFuture
java.util.concurrent.CompletableFuture.thenCompose(Function) 1 100 %
CompletableFuture
java.util.concurrent.CompletableFuture.uniComposeStage(Executor, Function) 1
100 % Object
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener$$Lambda.0x0000000801058000.apply(Object)
1 100 % CompletionStage
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$invoke$0(ReplicaRequest,
UUID, ReplicaPrimacy) 1 100 % CompletableFuture
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processRequest(ReplicaRequest,
ReplicaPrimacy, UUID) 1 100 % CompletableFuture
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.processTableAwareRequest(ReplicaRequest,
ReplicaPrimacy, UUID) 1 100 % CompletableFuture
java.util.concurrent.CompletableFuture.thenCompose(Function) 1 100 %
CompletableFuture
java.util.concurrent.CompletableFuture.uniComposeStage(Executor, Function) 1
100 % Object
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener$$Lambda.0x0000000801072810.apply(Object)
1 100 % CompletionStage
org.apache.ignite.internal.partition.replicator.ZonePartitionReplicaListener.lambda$processTableAwareRequest$4(ReplicaRequest,
ReplicaPrimacy, UUID, Void) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.process(ReplicaRequest,
ReplicaPrimacy, UUID) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processRequestInContext(ReplicaRequest,
ReplicaPrimacy, UUID) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processRequest(ReplicaRequest,
ReplicaPrimacy) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxOperationManagementLogic(ReplicaRequest,
ReplicaPrimacy, HybridTimestamp) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(ReplicaRequest,
ReplicaPrimacy, HybridTimestamp) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.appendTxCommand(UUID,
ZonePartitionId, RequestType, boolean, Supplier) 1 100 % Object
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener$$Lambda.0x000000080114b800.get()
1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processOperationRequest$10(ReadWriteSingleRowPkReplicaRequest,
ReplicaPrimacy) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processSingleEntryAction(ReadWriteSingleRowPkReplicaRequest,
long) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.resolveRowByPk(BinaryTuple,
UUID, IgniteTriFunction) 1 100 % CompletableFuture
org.apache.ignite.internal.table.distributed.HashIndexLocker.locksForLookupByKey(UUID,
BinaryTuple) 1 100 % CompletableFuture
org.apache.ignite.internal.tx.impl.HeapLockManager.acquire(UUID, LockKey,
LockMode) 1 100 % IgniteBiTuple
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.tryAcquire(UUID,
LockMode) 1 100 % boolean
org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.isWaiterReadyToNotify(HeapLockManager$WaiterImpl,
boolean) 1 100 % void
org.apache.ignite.internal.tx.PossibleDeadlockOnLockAcquireException.<init>(UUID,
UUID, LockMode, LockMode, boolean, VolatileTxStateMetaStorage) 1 100 %
String org.apache.ignite.internal.tx.TransactionLogUtils.formatTxInfo(UUID,
VolatileTxStateMetaStorage) 1 100 % String
org.apache.ignite.internal.tx.TransactionLogUtils.formatTxInfo(UUID,
VolatileTxStateMetaStorage, boolean) 1 100 % String
org.apache.ignite.internal.tx.TransactionLogUtils.formatTxInfo(UUID, String,
boolean) 1 100 % Object
java.lang.invoke.Invokers$Holder.linkToTargetMethod(Object, Object) 1 100 %
Object java.lang.invoke.LambdaForm$MH.0x0000000800116400.invoke(Object, Object)
1 100 % Object
java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(Object, Object, long)
1 100 % String java.lang.StringConcatHelper.newString(byte[], long) 1 100
%{code}
Up to 652 MiB per sample in JFR on high contention.Probably, there are other
places where usages of IgniteStringFormatter are excessive.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)