hi Yuri,
thanks a lot for posting the workaround to the mailing list! I am sure it
will be very useful for people who will run into a similar problem.
kind regards,
risto

2016-08-04 17:59 GMT+03:00 Yuri Kazankin <yuni...@yahoo.com>:

> Hello!
>
> Risto, Thanks for the you tips, the problem was solved. For systemd in
> service settings added “KillMode=process”, this makes it possible to kill
> only the basic process and does not affect the child processes.
>
> $ cat /lib/systemd/system/sec@.service
> [Unit]
> Description=Simple Event Correlator (instance %I)
> After=syslog.target
>
> [Service]
> Type=forking
> PIDFile=/run/sec-%I.pid
> ExecStart=/usr/bin/sec -detach -pid=/run/sec-%I.pid -conf=/etc/sec/%I.sec
> --dump=/tmp/sec-tomcat.dump --nochildterm -log=/var/log/sec-%I --intevents
> $OPTIONS_%I
> EnvironmentFile=/etc/sysconfig/sec
> *KillMode=process*
>
> [Install]
> WantedBy=multi-user.target
>
>
>
> --
> WBR
> Yuri Kazankin
> yuni...@yahoo.com
>
> On 2 авг. 2016 г., at 0:53, Risto Vaarandi <risto.vaara...@gmail.com>
> wrote:
>
> hi Yuri,
> if your platform is Linux, you can figure out the parent process ID by
> running "ps -ef" and inspecting the third column. This command lists all
> processes on your system, so you would probably need to grep the output for
> relevant processes (e.g., ps -ef | grep tomcat). When you shut down sec,
> please also inspect its log, because sec reports the ID of every process it
> sends the TERM signal. The relevant sec log messages look like follows:
> SIGTERM received: shutting down SEC
> Sending SIGTERM to process 20879
>
> Nevertheless, after having a look into the scripts, I have some doubts if
> the application is running as sec child process, since from the shell
> process that runs restart-tomcat.sh you are invoking startup.sh which
> creates another process (that process should become a grandchild of sec
> which no longer gets SIGTERM). Since you are experiencing this problem when
> using systemctl command for restarting sec, maybe this issue is related to
> how systemd shuts down a service. After browsing a web, I run into couple
> of threads that describe a similar scenario, for example:
> http://stackoverflow.com/questions/32208782/cant-
> detach-child-process-when-main-process-is-started-from-systemd
>
> In order to find out if you are experiencing a similar problem, you could
> try stopping sec in two ways -- first by shutting it down manually by
> sending TERM signal to sec process, and then stopping it with 'systemctl
> stop sec@tomcat'. If your application stays alive in the first case but
> dies in the second case, it has to be systemd which stops your application
> alongside with sec, probably because your application was started by sec
> and belongs to the same process group. Nevertheless, if systemd uses the
> TERM signal for taking down your application, you could still use the trap
> '' 15 statement in the restart-tomcat.sh script for ignoring this signal.
> However, I would recommend to create systemd service files for your
> application, so that you could start and stop it with systemctl. Invoking
> "systemctl restart ..." instead of restart-tomcat.sh would probably solve
> the problem, since systemd is made aware that your application is a
> separate service.
>
> kind regards,
> risto
>
> 2016-08-01 14:14 GMT+03:00 Yuri Kazankin <yuni...@yahoo.com>:
>
>> Hi Risto,
>>
>> Sec process is seen as:
>> /usr/bin/perl -w /usr/bin/sec -detach -pid=/run/sec-tomcat.pid
>> -conf=/etc/sec/tomcat.sec --debug=6 --dump=/tmp/sec-tomcat.dump
>> --nochildterm -log=/var/log/sec-tomcat --nointevents -input=/var/log/tomcat/
>> catalina.out
>>
>> Unfortunately, --nochildterm option does not fix the problem. I cannot
>> find the dump file, I tried to specify it in the start script
>> (--dump=/tmp/sec-tomcat.dump), but without result.
>>
>> The command "ps wuaxf" does not reveal how the child process:
>> # ps wuaxf
>> root     31114  0.1  0.2 150232  9724 ?        S    13:42   0:01
>> /usr/bin/perl -w /usr/bin/sec -detach -pid=/run/sec-tomcat.pid
>> -conf=/etc/sec/tomcat.sec --debug=6 --dump=/tmp/sec-tomcat.dump
>> --nochildterm -
>> root     31214  4.8  6.8 3756928 266000 ?      Sl   13:44   0:39
>> /opt/java-8-sun/jre/bin/java -Djava.util.logging.config.
>> file=/opt/tomcat-7.0.55/conf/logging.properties
>> -Djava.util.logging.manager=org.apache
>>
>> In my restart-tomcat.sh:
>> kill -9 `cat /run/tomcat-7.0.55.pid` ; sleep 5 ; /opt/tomcat-7.0.55/bin/
>> startup.sh
>>
>> In the attachment native scripts of Apache Tomcat: startup.sh and
>> catalina.sh
>>
>> Trap will try if nothing else helps.
>>
>> Can you something else advise?
>>
>>
>>
>>
>>
>> --
>> WBR
>> Yuri Kazankin
>> yuni...@yahoo.com
>>
>> On 31 июля 2016 г., at 22:23, Risto Vaarandi <risto.vaara...@gmail.com>
>> wrote:
>>
>> hi Yuri,
>> my apologies for not answering earlier -- your e-mail landed in my spam
>> folder initially :(
>>
>> I am suspecting that your application is started in a way which makes it
>> a child process of sec. However, when sec shuts down, it sends the TERM
>> signal to all its child processes by default. If the shell process that is
>> executing the content of /opt/scripts/restart-tomcat.sh is still running,
>> this process will get the TERM signal as well. Therefore, if the
>> application was started with the shell 'exec' directive that replaces the
>> shell process with the application process, it is actually your application
>> which gets the TERM signal.
>>
>> In order to find out whether your application is running as a child
>> process of sec, send the USR1 signal to the sec process which creates the
>> dump file (by default located at /tmp/sec.dump). This file contains
>> detailed information about internal state of sec, and also provides a list
>> of all child processes.
>>
>> If your application is indeed stopping because of the TERM signal from
>> sec, there are couple of workarounds:
>> 1) start sec with the --nochildterm command line option which disables
>> sending TERM to child processes,
>> 2) include a 'trap' statement in /opt/scripts/restart-tomcat.sh that
>> would ignore the TERM signal (e.g., trap '' 15)
>>
>> Also, if your application is terminating for other reasons than TERM
>> signal from sec, can you share the content of /opt/scripts/restart-tomcat.
>> sh?
>>
>> Hope this helps,
>> risto
>>
>>
>>
>> 2016-07-29 13:55 GMT+03:00 Yuri Kazankin <yuni...@yahoo.com>:
>>
>>> Hello!
>>>
>>> I have a problem with sec 2.7.10
>>>
>>> I created the instance:
>>> # cat /etc/sysconfig/sec
>>> OPTIONS_tomcat="-input=/var/log/tomcat/catalina.out”
>>>
>>>
>>> and configured via systemd
>>> # cat /lib/systemd/system/sec@.service
>>> [Unit]
>>> Description=Simple Event Correlator (instance %I)
>>> After=syslog.target
>>>
>>> [Service]
>>> Type=forking
>>> PIDFile=/run/sec-%I.pid
>>> ExecStart=/usr/bin/sec -detach -pid=/run/sec-%I.pid
>>> -conf=/etc/sec/%I.sec --debug=6 --nochildterm -log=/var/log/sec-%I
>>> --nointevents $OPTIONS_%I
>>> EnvironmentFile=/etc/sysconfig/sec
>>>
>>> [Install]
>>> WantedBy=multi-user.target
>>>
>>>
>>> My rules restart the application after the event in the log:
>>> # cat /etc/sec/tomcat.sec
>>> type=SingleWithSuppress
>>> ptype=RegExp
>>> pattern=(^.+OutOfMemoryError.+$)
>>> desc=Tomcat restarted after OutOfMemoryError Exception
>>> action=shellcmd /opt/scripts/restart-tomcat.sh
>>> window=300
>>>
>>> And it works great! But after the event, if I try to execute a restart
>>> of the instance (systemctl restart sec@tomcat), my application stops(((
>>> I can not understand why this is happening and how to fix it ...
>>>
>>>
>>> --
>>> WBR
>>> Yuri Kazankin
>>> yuni...@yahoo.com
>>>
>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> _______________________________________________
>>> Simple-evcorr-users mailing list
>>> Simple-evcorr-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users
>>>
>>
>>
>>
>>
>
>
------------------------------------------------------------------------------
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to