Both are used in a two step shutdown iirc. When using bin/stop or when stopping a child instance, we first ask for the instance to shutdown cleanly, and if it does not work, the process is killed using its pid.
On Fri, Aug 24, 2012 at 1:41 PM, Charles Moulliard <[email protected]> wrote: > Hi, > > I'm really curious to discover that we have 2 files doing the same job (I > think so) a port file (created in data directory) and a pid file (that I > cannot find in data directory) > > this.pidFile = props.getProperty(KARAF_SHUTDOWN_PID_FILE); > this.portFile = props.getProperty(KARAF_SHUTDOWN_PORT_FILE); > > 1) For PidFile --> org.apache.karaf.main.InstanceHelper > > private static void writePid(String pidFile) { > try { > if (pidFile != null) { > .... > if (matcher.matches()) { > int pid = Integer.parseInt(matcher.group(1)); > Writer w = new OutputStreamWriter(new > FileOutputStream(pidFile)); > w.write(Integer.toString(pid)); > w.close(); > ... > } > > Most probably we never create it in this part of the code > > 2) Port File --> org.apache.karaf.main.InstanceHelper > > static void setupShutdown(ConfigProperties config, Framework framework) > { > writePid(config.pidFile); > try { > int port = config.shutdownPort; > String host = config.shutdownHost; > String portFile = config.portFile; > final String shutdown = config.shutdownCommand; > if (port >= 0) { > ServerSocket shutdownSocket = new ServerSocket(port, 1, > InetAddress.getByName(host)); > if (port == 0) { > port = shutdownSocket.getLocalPort(); > } > if (portFile != null) { > Writer w = new OutputStreamWriter(new > FileOutputStream(portFile)); > w.write(Integer.toString(port)); > w.close(); > } > Thread thread = new ShutdownSocketThread(shutdown, > shutdownSocket, framework); > thread.setDaemon(true); > thread.start(); > } > } catch (Exception e) { > e.printStackTrace(); > } > } > > Questions : > - Do we still need the pid file ? If no can we clean the code ? > - Could it be possible that for some reasons (JDK = 7, > AccessRights/Permissions), the process to create the port file fails on a > machine ? I ask you this question as I get this messsage when I tried to > shutdown karaf on acloud machine > > remote: Stopping application... > remote: Exception in thread "main" java.lang.NumberFormatException: null > remote: at java.lang.Integer.parseInt(Integer.java:454) > remote: at java.lang.Integer.parseInt(Integer.java:527) > remote: at org.apache.karaf.main.Stop.main(Stop.java:66) > remote: Done > > > Regards, > > -- > Charles Moulliard > Apache Committer / Sr. Pr. Consultant at FuseSource.com > Twitter : @cmoulliard > Blog : http://cmoulliard.blogspot.com > -- ------------------------ Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ FuseSource, Integration everywhere http://fusesource.com
