karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Moulliard <ch0...@gmail.com>
Subject Re: Why do we have port and pid file ?
Date Mon, 27 Aug 2012 08:25:54 GMT
FYI. In the data directory of the fabric/karaf instance running on
openshift, the port file is not created

[fabric-fuse.rhcloud.com ~]\> ls
/var/lib/stickshift/b8f9c391e35a4ab3b376e66929e7f2f6/fabric/runtime/fabric/data/
cache/             generated-bundles/ karaf.out          log/
tmp/

On Mon, Aug 27, 2012 at 10:15 AM, Charles Moulliard <ch007m@gmail.com>wrote:

> In my case, the issue is related to the port file not created by Karaf
> when the method setupShutdown is called (
> https://github.com/apache/karaf/blob/trunk/main/src/main/java/org/apache/karaf/main/InstanceHelper.java)
> and not to the pidFile.
>
>
> On Mon, Aug 27, 2012 at 9:45 AM, Guillaume Nodet <gnodet@gmail.com> wrote:
>
>> The related code is in
>>
>>
>> https://github.com/apache/karaf/blob/trunk/instance/core/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java
>>
>> Could you try maybe deleting the file just after having created it using
>> createTempFile ?
>> The scripts that actually launch the process should create the file
>> themselves, but maybe the file is locked by the JVM ...
>>
>> On Mon, Aug 27, 2012 at 8:54 AM, Charles Moulliard <ch007m@gmail.com>
>> wrote:
>>
>> > Thx for the clarification
>> >
>> > Could it be possible that for some reasons (JDK =
>> > 7, AccessRights/Permissions, ...), the process to create the port file
>> > fails on a machine but Karaf is well started ? I ask you this question
>> as I
>> > get an error message (port file not found) when Karaf shutdown on
>> openshift
>> > cloud machine.
>> >
>> > On Fri, Aug 24, 2012 at 3:05 PM, Guillaume Nodet <gnodet@gmail.com>
>> wrote:
>> >
>> > > 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 <ch007m@gmail.com>
>> > > 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
>> > >
>> >
>> >
>> >
>> > --
>> > 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
>>
>
>
>
> --
> Charles Moulliard
> Apache Committer / Sr. Pr. Consultant at FuseSource.com
> Twitter : @cmoulliard
> Blog : http://cmoulliard.blogspot.com
>
>
>


-- 
Charles Moulliard
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Twitter : @cmoulliard
Blog : http://cmoulliard.blogspot.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message