admin@glassfish.java.net

Re: GlassFish process exit

From: Tom Mueller <tom.mueller_at_oracle.com>
Date: Mon, 01 Nov 2010 16:18:33 -0500

  Yes.
Tom

On 11/1/2010 4:17 PM, Marina Vatkina wrote:
> Is it still an open issue for which we need to call into the meeting?
>
> thanks,
> -marina
>
> Tom Mueller wrote:
>> Byron,
>> I'd like to discuss this commit at the next admin iteam meeting on
>> Tuesday.
>> http://wikis.sun.com/display/GlassFish/AdminIteam
>> Specifically, what we now expect for fixing other related bugs.
>>
>> What this is saying is that the GlassFish process will never exit by
>> returning from the main thread. It will always either do a
>> System.exit() or be killed. This effects several other issues:
>>
>> 13780 - for getting all threads to be daemons (Tom) - dup of 13957
>> 13957 - Non-daemon threads prevent clean shutdown (Byron)
>> 13593 - logging is terminated too early during appserver shutdown
>> (Naman)
>> 13592 - asadmin stop-local-instance does not stop instance with
>> outstanding ejb invocation (Marina)
>>
>> Your comment in issue 13951 about not having control over apps
>> creating non-daemon threads seems to be the important issue here.
>>
>> Tom
>>
>> On 10/28/2010 7:12 PM, bnevins_at_dev.java.net wrote:
>>> Author: bnevins
>>> Date: 2010-10-29 00:12:29+0000
>>> New Revision: 42283
>>>
>>> Modified:
>>>
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java
>>>
>>>
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java
>>>
>>>
>>> Log:
>>> --IT 13951
>>> --force is now false by default for stop-domain and stop-instance
>>> If it is false then we call Syste.exit()
>>> If it is true we do an OS-level call to kill on our pid
>>>
>>>
>>>
>>> Modified:
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java
>>>
>>> Url:
>>> https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java?view=diff&rev=42283&p1=trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java&p2=trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java&r1=42282&r2=42283
>>>
>>> ==============================================================================
>>>
>>> ---
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java
>>> (original)
>>> +++
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopDomainCommand.java
>>> 2010-10-29 00:12:29+0000
>>> @@ -77,7 +77,7 @@
>>> @Inject
>>> ServerEnvironment env;
>>>
>>> - @Param(optional=true, defaultValue="true")
>>> + @Param(optional=true, defaultValue="false")
>>> Boolean force;
>>>
>>>
>>>
>>> Modified:
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java
>>>
>>> Url:
>>> https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java?view=diff&rev=42283&p1=trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java&p2=trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java&r1=42282&r2=42283
>>>
>>> ==============================================================================
>>>
>>> ---
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java
>>> (original)
>>> +++
>>> trunk/v3/core/kernel/src/main/java/com/sun/enterprise/v3/admin/StopServer.java
>>> 2010-10-29 00:12:29+0000
>>> @@ -41,7 +41,12 @@
>>>
>>> import com.sun.enterprise.module.ModulesRegistry;
>>> import com.sun.enterprise.module.Module;
>>> +import com.sun.enterprise.universal.process.ProcessManager;
>>> +import com.sun.enterprise.universal.process.ProcessManagerException;
>>> +import com.sun.enterprise.universal.process.ProcessUtils;
>>> import com.sun.enterprise.util.LocalStringManagerImpl;
>>> +import com.sun.enterprise.util.OS;
>>> +import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> import java.util.Collection;
>>> @@ -60,7 +65,6 @@
>>> */
>>> protected final void doExecute(ModulesRegistry registry,
>>> Logger logger, boolean force) {
>>>
>>> logger.info(localStrings.getLocalString("stop.domain.init", "Server
>>> shutdown initiated"));
>>> - boolean noSysExit =
>>> Boolean.parseBoolean(System.getenv("AS_NO_SYSTEM_EXIT"));
>>>
>>> Collection<Module> modules = registry.getModules(
>>> "org.glassfish.core.glassfish");
>>> @@ -72,9 +76,32 @@
>>> logger.warning(modules.size() + " no of primordial
>>> modules found");
>>> }
>>>
>>> - if (!noSysExit&& force) {
>>> + if(force)
>>> + kill();
>>> + else
>>> System.exit(0);
>>> - }
>>> }
>>> +
>>> private final static LocalStringManagerImpl localStrings = new
>>> LocalStringManagerImpl(StopServer.class);
>>> +
>>> + /*
>>> + * No more Mr. Nice Guy!!
>>> + * we should NOT return from here!
>>> + *
>>> + */
>>> + private void kill() {
>>> + int pid = ProcessUtils.getPid();
>>> + ProcessManager pm = null;
>>> + try {
>>> + if (OS.isWindowsForSure())
>>> + pm = new ProcessManager("taskkill", "/pid", "" + pid);
>>> + else
>>> + pm = new ProcessManager("kill", "-9", "" + pid);
>>> +
>>> + pm.execute();
>>> + }
>>> + catch (ProcessManagerException ex) {
>>> + // ignore
>>> + }
>>> + }
>>> }
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: commits-unsubscribe_at_glassfish-svn.dev.java.net
>>> For additional commands, e-mail:
>>> commits-help_at_glassfish-svn.dev.java.net
>>>