Ivan Bessonov created IGNITE-25032:
--------------------------------------
Summary: CatalogCompactionRunner is being executed in network
thread
Key: IGNITE-25032
URL: https://issues.apache.org/jira/browse/IGNITE-25032
Project: Ignite
Issue Type: Bug
Reporter: Ivan Bessonov
{code:java}
Thread [name="%node18%MessagingService-inbound-Default-0-2", id=149,
state=WAITING, blockCnt=91, waitCnt=325764]
Lock
[object=java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync@21433869,
ownerName=%node18%metastorage-compaction-executor-0, ownerId=324]
at java.base@17/jdk.internal.misc.Unsafe.park(Native Method)
at
java.base@17/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
at
java.base@17/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:715)
at
java.base@17/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1027)
at
java.base@17/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:738)
at
app//org.apache.ignite.internal.metastorage.server.persistence.RocksDbKeyValueStorage.timestampByRevision(RocksDbKeyValueStorage.java:1281)
at
app//org.apache.ignite.internal.metastorage.impl.MetaStorageManagerImpl.lambda$timestampByRevisionLocally$48(MetaStorageManagerImpl.java:926)
at
app//org.apache.ignite.internal.metastorage.impl.MetaStorageManagerImpl$$Lambda$2885/0x000000080182cc08.get(Unknown
Source)
at
app//org.apache.ignite.internal.util.IgniteUtils.inBusyLock(IgniteUtils.java:860)
at
app//org.apache.ignite.internal.metastorage.impl.MetaStorageManagerImpl.timestampByRevisionLocally(MetaStorageManagerImpl.java:926)
at
app//org.apache.ignite.internal.distributionzones.rebalance.RebalanceMinimumRequiredTimeProviderImpl.minimumRequiredTime(RebalanceMinimumRequiredTimeProviderImpl.java:64)
at
app//org.apache.ignite.internal.catalog.compaction.CatalogCompactionRunner.getMinLocalTime(CatalogCompactionRunner.java:269)
at
app//org.apache.ignite.internal.catalog.compaction.CatalogCompactionRunner$CatalogCompactionMessageHandler.handleMinimumTimesRequest(CatalogCompactionRunner.java:663)
at
app//org.apache.ignite.internal.catalog.compaction.CatalogCompactionRunner$CatalogCompactionMessageHandler.onReceived(CatalogCompactionRunner.java:644)
at
app//org.apache.ignite.internal.network.TrackableNetworkMessageHandler.onReceived(TrackableNetworkMessageHandler.java:41)
at
app//org.apache.ignite.internal.network.DefaultMessagingService.handleStartingWithFirstHandler(DefaultMessagingService.java:534)
at
app//org.apache.ignite.internal.network.DefaultMessagingService.lambda$handleMessageFromNetwork$5(DefaultMessagingService.java:429)
at
app//org.apache.ignite.internal.network.DefaultMessagingService$$Lambda$1093/0x00000008010dba68.run(Unknown
Source)
at
java.base@17/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base@17/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base@17/java.lang.Thread.run(Thread.java:833) {code}
It should be done in some thread-pool, because it involves some IO.
We should add meta-storage access to
{{{}org.apache.ignite.internal.thread.ThreadOperation{}}}. By that I mean that
we should assert {{STORAGE_READ}} while reading the data locally. _Might be a
separate Jira._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)