[
https://issues.apache.org/jira/browse/GEODE-2390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Barbara Pruijn resolved GEODE-2390.
-----------------------------------
Resolution: Won't Do
> improve debugging and error handling of process control commands
> ----------------------------------------------------------------
>
> Key: GEODE-2390
> URL: https://issues.apache.org/jira/browse/GEODE-2390
> Project: Geode
> Issue Type: Bug
> Components: gfsh
> Reporter: Kirk Lund
> Priority: Major
>
> The process control commands are the gfsh commands for start/status/stop of
> locator or server.
> The API classes involved are in org.apache.geode.management:
> * LocatorLauncher
> * ServerLauncher
> The internal implementation classes involved in this are in
> org.apache.geode.internal.process.
> Within the gfsh process, ProcessControllerFactory creates an instance of
> ProcessController based on what dependencies are on the classpath:
> * MBeanProcessController: Attach API is present via tools.jar -- relies on
> Attach API and mbean operations -- gfsh attaches to the local locator or
> server JVM and uses JMX or gfsh attaches to the jmx manager to manipulate a
> federated mbean
> * FileProcessController: Attach API is not available -- uses temporary files
> within the target process' working directory
> The following file names are used by FileProcessController:
> * vf.gf.server.stop.cmd -- request to stop process -- server process deletes
> this file and then shuts down
> * vf.gf.server.status.cmd -- request to get status -- server process deletes
> this file and then writes out the vf.gf.server.status
> * vf.gf.server.status -- the resulting status -- gfsh process deletes this
> file and displays status to user
> ControlFileWatchdog is used to monitor for existence of the cmd files and
> react to them.
> Two main categories of bugs have been encountered:
> 1) tools.jar is available to one process but not the other (gfsh or server)
> 2) race conditions involving the control files (such as creating
> vf.gf.server.status before writing the status into the file)
> ProcessUtils is used internally to identify the PID, check if a process is
> alive, check if the Attach API is available and potentially kill the process.
> This class delegates to multiple strategies:
> * AttachProcessUtils -- uses the Attach API
> * NativeProcessUtils -- uses JNA
> * no-op implementation -- does nothing
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)