ha faculty created IGNITE-12554:
-----------------------------------
Summary: Ignite instance couldn't be restarted if it's parent
thread group has been called destroy once
Key: IGNITE-12554
URL: https://issues.apache.org/jira/browse/IGNITE-12554
Project: Ignite
Issue Type: Bug
Components: cache
Affects Versions: 2.7.6
Reporter: ha faculty
Attachments: NodeRestartTesting.java
I am using an inhouse platform which manage the life cycle of ignite instance
by calling ignite.start() and ignite.stop() from a web application.
it could be started without issue for the first time. however, if it stop the
ignite by calling ignite.stop() and followed by destroying the parent thread
group which starting it.
Calling ignite.start() in the 2nd time will throw the following exception
Exception in thread "kickOff" java.lang.IllegalThreadStateExceptionException in
thread "kickOff" java.lang.IllegalThreadStateException at
java.lang.ThreadGroup.addUnstarted(ThreadGroup.java:867) at
java.lang.Thread.init(Thread.java:405) at
java.lang.Thread.init(Thread.java:349) at
java.lang.Thread.<init>(Thread.java:599) at
org.apache.ignite.thread.IgniteThread.<init>(IgniteThread.java:96) at
org.apache.ignite.internal.util.StripedExecutor$Stripe.start(StripedExecutor.java:474)
at
org.apache.ignite.internal.util.StripedExecutor.<init>(StripedExecutor.java:121)
at
org.apache.ignite.internal.util.StripedExecutor.<init>(StripedExecutor.java:80)
at
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1842)
at
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1730)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1158) at
org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:589) at
org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:565) at
org.apache.ignite.Ignition.start(Ignition.java:305) at
com.faculty.poc.ignite.app.NodeRestartTesting.run(NodeRestartTesting.java:60)
at java.lang.Thread.run(Thread.java:748)
Please find my demo code for this issue.
Walk through into Ignite code, it should be caused by a static thread group
created in IgniteThread class. (private static final ThreadGroup DFLT_GRP = new
ThreadGroup("ignite")
Destroyed the parent thread group which start the ignite instance will result
in causing the DFLT_GRP go into destroyed state. Therefore, when Ignite was
start ifor the 2nd time, this static thread group has been destroyed and no
longer able to run the ignite.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)