You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Sergey Kosarev (JIRA)" <ji...@apache.org> on 2018/02/05 11:02:00 UTC
[jira] [Updated] (IGNITE-7624) Cluster Activation from Client Node
hangs up in specific configuration
[ https://issues.apache.org/jira/browse/IGNITE-7624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Kosarev updated IGNITE-7624:
-----------------------------------
Description:
if we start cluster in inactive state GridTaskProcessor is not initiated fully:
{code:java}
@Override public void onKernalStart(boolean active) throws IgniteCheckedException {
if (!active)
return;
tasksMetaCache = ctx.security().enabled() && !ctx.isDaemon() ?
ctx.cache().<GridTaskNameHashKey, String>utilityCache() : null;
startLatch.countDown();
}{code}
and those startLatch is still up!
Later on if we try activate cluster from client node async task is trying to be invoked
(see org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl#sendComputeChangeGlobalState)
and if ctx.security().enabled == true then Task is can't start as he waits indefinitely for those startLatch in
org.apache.ignite.internal.processors.task.GridTaskProcessor#taskMetaCache
{code:java}
private IgniteInternalCache<GridTaskNameHashKey, String> taskMetaCache() {
assert ctx.security().enabled();
if (tasksMetaCache == null)
U.awaitQuiet(startLatch);
return tasksMetaCache;
}{code}
stacktrace of the waiting thread:
{code:java}
"async-runnable-runner-1@3141" prio=5 tid=0x68 nid=NA waiting
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Unsafe.java:-1)
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 java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
at org.apache.ignite.internal.util.IgniteUtils.awaitQuiet(IgniteUtils.java:7491)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.taskMetaCache(GridTaskProcessor.java:269)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.saveTaskMetadata(GridTaskProcessor.java:845)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:703)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:448)
at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:244)
at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:216)
at org.apache.ignite.internal.IgniteComputeImpl.runAsync0(IgniteComputeImpl.java:704)
at org.apache.ignite.internal.IgniteComputeImpl.runAsync(IgniteComputeImpl.java:689)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.sendComputeChangeGlobalState(GridClusterStateProcessorImpl.java:837)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState0(GridClusterStateProcessorImpl.java:684)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState(GridClusterStateProcessorImpl.java:618)
at org.apache.ignite.internal.cluster.IgniteClusterImpl.active(IgniteClusterImpl.java:306)
at org.apache.ignite.internal.IgniteKernal.active(IgniteKernal.java:3541)
at org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest$7.run(IgniteClusterActivateDeactivateTest.java:628)
at org.apache.ignite.testframework.GridTestUtils$6.run(GridTestUtils.java:892)
at org.apache.ignite.testframework.GridTestUtils$9.call(GridTestUtils.java:1237)
at org.apache.ignite.testframework.GridTestThread.run(GridTestThread.java:86)
{code}
was:
if we start cluster in inactive state GridTaskProcessor is not initiated fully:
{code:java}
@Override public void onKernalStart(boolean active) throws IgniteCheckedException {
if (!active)
return;
tasksMetaCache = ctx.security().enabled() && !ctx.isDaemon() ?
ctx.cache().<GridTaskNameHashKey, String>utilityCache() : null;
startLatch.countDown();
}{code}
and those startLatch is still up!
Later on if we try activate cluster from client node async task is trying to be invoked
(see org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl#sendComputeChangeGlobalState)
and if ctx.security().enabled == true then Task is can't start as he waits indefinitely for those startLatch in
org.apache.ignite.internal.processors.task.GridTaskProcessor#taskMetaCache
{code:java}
private IgniteInternalCache<GridTaskNameHashKey, String> taskMetaCache() {
assert ctx.security().enabled();
if (tasksMetaCache == null)
U.awaitQuiet(startLatch);
return tasksMetaCache;
}{code}
stacktrace of the waiting thread:
{code:java}
"pool-1-thread-1@3160" prio=5 tid=0x68 nid=NA waiting
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Unsafe.java:-1)
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 java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
at org.apache.ignite.internal.util.IgniteUtils.awaitQuiet(IgniteUtils.java:7491)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.taskMetaCache(GridTaskProcessor.java:269)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.saveTaskMetadata(GridTaskProcessor.java:845)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:703)
at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:448)
at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:244)
at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:216)
at org.apache.ignite.internal.IgniteComputeImpl.runAsync0(IgniteComputeImpl.java:704)
at org.apache.ignite.internal.IgniteComputeImpl.runAsync(IgniteComputeImpl.java:689)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.sendComputeChangeGlobalState(GridClusterStateProcessorImpl.java:837)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState0(GridClusterStateProcessorImpl.java:684)
at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState(GridClusterStateProcessorImpl.java:618)
at org.apache.ignite.internal.cluster.IgniteClusterImpl.active(IgniteClusterImpl.java:306)
at org.apache.ignite.internal.IgniteKernal.active(IgniteKernal.java:3541)
at org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest$7.run(IgniteClusterActivateDeactivateTest.java:627)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java:-1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748){code}
> Cluster Activation from Client Node hangs up in specific configuration
> ----------------------------------------------------------------------
>
> Key: IGNITE-7624
> URL: https://issues.apache.org/jira/browse/IGNITE-7624
> Project: Ignite
> Issue Type: Bug
> Components: general
> Affects Versions: 2.3
> Reporter: Sergey Kosarev
> Priority: Major
> Fix For: 2.5
>
>
> if we start cluster in inactive state GridTaskProcessor is not initiated fully:
> {code:java}
> @Override public void onKernalStart(boolean active) throws IgniteCheckedException {
> if (!active)
> return;
> tasksMetaCache = ctx.security().enabled() && !ctx.isDaemon() ?
> ctx.cache().<GridTaskNameHashKey, String>utilityCache() : null;
> startLatch.countDown();
> }{code}
>
> and those startLatch is still up!
>
> Later on if we try activate cluster from client node async task is trying to be invoked
> (see org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl#sendComputeChangeGlobalState)
> and if ctx.security().enabled == true then Task is can't start as he waits indefinitely for those startLatch in
> org.apache.ignite.internal.processors.task.GridTaskProcessor#taskMetaCache
> {code:java}
> private IgniteInternalCache<GridTaskNameHashKey, String> taskMetaCache() {
> assert ctx.security().enabled();
> if (tasksMetaCache == null)
> U.awaitQuiet(startLatch);
> return tasksMetaCache;
> }{code}
>
> stacktrace of the waiting thread:
> {code:java}
> "async-runnable-runner-1@3141" prio=5 tid=0x68 nid=NA waiting
> java.lang.Thread.State: WAITING
> at sun.misc.Unsafe.park(Unsafe.java:-1)
> 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 java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
> at org.apache.ignite.internal.util.IgniteUtils.awaitQuiet(IgniteUtils.java:7491)
> at org.apache.ignite.internal.processors.task.GridTaskProcessor.taskMetaCache(GridTaskProcessor.java:269)
> at org.apache.ignite.internal.processors.task.GridTaskProcessor.saveTaskMetadata(GridTaskProcessor.java:845)
> at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:703)
> at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:448)
> at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:244)
> at org.apache.ignite.internal.processors.closure.GridClosureProcessor.runAsync(GridClosureProcessor.java:216)
> at org.apache.ignite.internal.IgniteComputeImpl.runAsync0(IgniteComputeImpl.java:704)
> at org.apache.ignite.internal.IgniteComputeImpl.runAsync(IgniteComputeImpl.java:689)
> at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.sendComputeChangeGlobalState(GridClusterStateProcessorImpl.java:837)
> at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState0(GridClusterStateProcessorImpl.java:684)
> at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessorImpl.changeGlobalState(GridClusterStateProcessorImpl.java:618)
> at org.apache.ignite.internal.cluster.IgniteClusterImpl.active(IgniteClusterImpl.java:306)
> at org.apache.ignite.internal.IgniteKernal.active(IgniteKernal.java:3541)
> at org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest$7.run(IgniteClusterActivateDeactivateTest.java:628)
> at org.apache.ignite.testframework.GridTestUtils$6.run(GridTestUtils.java:892)
> at org.apache.ignite.testframework.GridTestUtils$9.call(GridTestUtils.java:1237)
> at org.apache.ignite.testframework.GridTestThread.run(GridTestThread.java:86)
> {code}
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)