ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladislav Pyatkov <vldpyat...@gmail.com>
Subject Re: asynchronized cache put cause cache get blocked problem
Date Thu, 25 Aug 2016 07:40:29 GMT
Hi,

Could you please provide thread dump from all server nodes?
It will help to determine reasons of hold.

On Wed, Aug 24, 2016 at 10:32 AM, Zhengqingzheng <zhengqingzheng@huawei.com>
wrote:

> Hi there,
>
> When running performance test, our system always blocked at
> “GridFutureAdapter.get0”method.
>
> Here is the log info:
>
> ""busReqExecutor-thread-99" #818 daemon prio=5 os_prio=0
> tid=0x00007f972ba3c000 nid=0x1f5a5 waiting on condition [0x00007f96f9e3d000]
>
>    java.lang.Thread.State: WAITING (parking)
>
>          at sun.misc.Unsafe.park(Native Method)
>
>          - parking to wait for  <0x00000007a164a690> (a
> org.apache.ignite.internal.processors.cache.distributed.dht.
> GridPartitionedSingleGetFuture)
>
>          at java.util.concurrent.locks.LockSupport.park(LockSupport.
> java:175)
>
>          at java.util.concurrent.locks.AbstractQueuedSynchronizer.
> parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>
>          at java.util.concurrent.locks.AbstractQueuedSynchronizer.
> doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
>
>          at java.util.concurrent.locks.AbstractQueuedSynchronizer.
> acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
>
>          at org.apache.ignite.internal.util.future.GridFutureAdapter.
> get0(GridFutureAdapter.java:159)
>
>          at org.apache.ignite.internal.util.future.GridFutureAdapter.
> get(GridFutureAdapter.java:117)
>
>          at org.apache.ignite.internal.processors.cache.distributed.
> dht.atomic.GridDhtAtomicCache.get(GridDhtAtomicCache.java:347)
>
>          at org.apache.ignite.internal.processors.cache.
> GridCacheAdapter.get(GridCacheAdapter.java:4783)
>
>          at org.apache.ignite.internal.processors.cache.
> GridCacheAdapter.get(GridCacheAdapter.java:1395)
>
>          at org.apache.ignite.internal.processors.cache.
> IgniteCacheProxy.get(IgniteCacheProxy.java:956)
>
>          at com.huawei.soa.daf.impl.DafContextImpl.*checkObjIsExist*(DafContextImpl.java:2348)
> ---- step 2
>
>          at com.huawei.soa.daf.impl.DafContextImpl.*saveOrUpdateData*(DafContextImpl.java:1896)
> --step 1
>
>          at com.huawei.soa.daf.impl.DafContextImpl.batchSaveCreatedVo(
> DafContextImpl.java:1555)
>
>          at com.huawei.soa.daf.impl.DafContextImpl.saveCreatedVo(
> DafContextImpl.java:1482)
>
>          at com.huawei.soa.daf.impl.DafContextImpl.commit(
> DafContextImpl.java:688)
>
>          …”
>
> *In the step1, SaveOrUpdateData method will call putAll methods for
> different caches using .withAysnc(). During this time , it seems that all
> async cache is locked for put operations.*
>
> *However in step 2 checkObjIsExist() method, I need to call cache.get(key)
> method to verify some other data (keys, values). But due to the first step,
> the cache is locked. *
>
> *All the get operations are queued and wait for async cache put operations
> to complete. *
>
> *Is there any way I can call get method without async put blocking?*
>
>
>
> *Please see press log for details. *
>
>
>
> *Best regards,*
>
> *Kevin*
>
>
>
>
>
>
>
>
>



-- 
Vladislav Pyatkov

Mime
View raw message