[megoldva] upstart job függősége sysvinit-es processztől

Fórumok

Van egy saját programunk, amit csak és kizárólag a mysqld (jobban mondva percona) elindulása után szabadna elindítani. A saját programunkhoz szeretnénk upstart-ot használni, viszont a percona sysvinit-es. Emiatt a saját program conf-jában hiába írom, hogy „start on started mysql”, nem indul el soha a saját stuff.

Van erre valami áthidaló megoldási javaslatotok? (Azon túl persze, hogy használjunk saját programunkhoz is sysvinit-et.) Köszi!

Hozzászólások

Egy workaround:

start on runlevel [2345]
exec /path/to/mytester.sh

mytester.sh releváns része:

if [ -f /var/run/mysql.pid ]
then
### INDULUNK MI IS!
else
### Még nincs Mysql
fi

--
Coding for fun. ;)

A masik megoldas, hogy a mysql init scriptjebe irod be, hogy "initctl emit mysql" miutan elinditottad vele a perconat. (Tehat a start agba valahova)
Akkor mukodni fog a megoldasod.

Ha tobbet szeretnel tudi, nezd meg az initctl man-jat.

Toni

Éppenséggel azt szeretném elkerülni, hogy a percona init scriptjébe kelljen kézzel beletúrkálni, mert egy frissítésnél csak a gond van vele.

Amúgy ezt az emit-et már néztem, konzolról ki is adtam ugyanezt a parancsot, de nem jártam sikerrel, nem indult el az ettől függő app. Ha jól értem a leírást az emit-tel eseményt tudok kiváltani, aminek át lehet adni akár tetszőleges környezeti változókat is. De azt nem igazán értem, hogy egy "emit mysql"-ből honnan tudná az upstart, hogy az azt jelenti: mysql started. Ha meg ezt jelenti akkor milyen emit kellene arra, ha leáll a mysqld?

Nem workaround: tessék jól megírni az alkalmazást. Ha másik gépen kéne futnia, akkor hogyan oldanátok meg a feladatot? Vagy mit csinál, ha mondjuk menet közben áll le a mysql? Beszarik?

Arra nem. Viszont ha az upstartban nincs full-featured mysql health check (baromira meglepne, ha lenne), akkor honnan lehet tudni, hogy az elindult processz valóban fogad is érdemben kapcsolatokat, nem csak úgy "futogat"?
Tehát az alkalmazásod nem lehet biztos benne, hogy valóban képes lesz kapcsolódni a mysqlhez, innentől pedig továbbra is inkorrekt, ha ezt feltételezi. Így a vége az a történetnek, hogy az alkalmazást mindenképpen fel kell készíteni arra, hogy mi van, ha nincs mysql. És akkor arról az esetről nem is beszéltünk, amikor menet közben hullik el a mysql...


script
    for i in `seq 1 30` ; do
        /usr/bin/mysqladmin --defaults-file="${HOME}"/debian.cnf ping && {
            exec /itt/a/programom
            # should not reach this line
            exit 2
        }
        sleep 1
    done
    exit 1
end script

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Még az jutott eszembe, hogy esetleg csinálok én egy upstart-os configot a perconának, és nem a sysvinit-re bízom a mysqld elindítását.