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)