Sziasztok!
Egy Java-s projektet buildelek Hudson-al és a következő fura probléma állt elő:
A build végén újra kellene indítani az alkalmazásszervert, amit az alábbi shell task csinál:
/etc/init.d/websphere-service restart
Az init script:
start() {
echo -n $"Starting $prog: "
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1 -username user -password pass
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh server1 -username user -password pass
RETVAL=$?
echo
return $RETVAL
}
...
restart)
stop
start
;;
...
A kimenet:
$ /bin/sh -xe /home/cidev/swicon/apache-tomcat-6.0.20/temp/hudson3974214737509419394.sh
+ /etc/init.d/websphere-service restart
Stopping : ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/stopServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3201I: Server stop request issued. Waiting for stop status.
ADMU4000I: Server server1 stop completed.
Starting : ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 12594
A problémám az, hogy szépen úgy tesz, mint ami elindul és ha indulás közbe nézegetem a ps-t, akkor meg is jelenik a pid amit kiír a logba, viszont miután lefut a task eltűnik.
A szervert sikerül leállítania, csak az elindítás nem megy.
Arra tippelek, hogy mivel a szülő folyamat befejeződik, az magával rántja az alkalmazás szervert is.
- 902 megtekintés
Hozzászólások
Én meg arra, hogy a hudsonon belül nem ugyanazt a shell környezetet, nem ugyanazokat a környezeti változókat kapja meg az appserver szkriptje, mintha kézzel indítanád és ezért nem talál meg valamit.
- A hozzászóláshoz be kell jelentkezni
Csak azt nem értem, hogy akkor miért írja azt, hogy oké elindultam, minden frankó. Azért kiíratom a környezeti változókat, egy próbát megér.
- A hozzászóláshoz be kell jelentkezni
A PWD változótól eltekintve megegyezik a kézzel és a hudson által kiírt env. :(
- A hozzászóláshoz be kell jelentkezni
Most már tuti, hogy magával rántja a folyamatot.
Amíg a sleep le nem járt, addig simán működött, amint végzett, eltűnt a szerver.
[workspace] $ /bin/sh -xe /home/cidev/swicon/apache-tomcat-6.0.20/temp/hudson6483288211868261323.sh
+ /etc/init.d/websphere-service start
Starting : ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 16413
+ sleep 40
Finished: SUCCESS
- A hozzászóláshoz be kell jelentkezni
Kis adalék, bár a problémát még mindig nem sikerült megoldani, mert nincs daemonize parancsom a gépen.
http://wiki.hudson-ci.org/display/HUDSON/Spawning+processes+from+build
- A hozzászóláshoz be kell jelentkezni
A megoldás:
Be kell állítani a következő környezeti változót a scriptben:
BUILD_ID=dontKillMe
- A hozzászóláshoz be kell jelentkezni
a scriptben levő *Server.sh fájlok démonizálnak, vagy csak ugy inditanak egyet?
mert ha nem demonizalnak, akkor a script leallasaval azok is kihalnak...
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni