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)

Reply via email to