ceskaexpedice/kramerius

K7 / problém s korektním zastavením běžící instance Tomcatu

Opened this issue · 2 comments

Zdravím,

potýkám se s tím již nějaký čas, ale asi nastal ten správný okamžik kdy to začít řešit systematicky.

Aktuální konfigurace je následující:

  • Apache Tomcat verze 9.0.93 (problém se ale týká i předchozích verzí řady 9),
  • K7 verze 7.0.37 (problém se vyskytuje i u předchozích verzí),
  • příslušné proměnné prostředí (JAVA_HOME, CATALINA_OPTS, CATALINA_HOME, CATALINA_BASE, CATALINA_PID atd.) řádně nastaveny.

Po nastartování Tomcatu příkazem $CATALINA_BASE/bin/startup.sh vše běží jak má, Kramerius normálně funguje.

Problém nastává v okamžiku pokusu o zastavení Tomcatu příkazem $CATALINA_BASE/bin/shutdown.sh.

Výstup příkazu k zastavení skončí takto:

tomcat-shutdown-00

a instance Tomcatu stále zůstává běžet, ale co je horší, začne panikařit (kromě toho dále alokuje zdroje) a kupit velkou rychlostí výjimky/chybové hlášky do logu.

Teprve ldyž zavolám příkaz $CATALINA_BASE/bin/catalina.sh stop -force, tak je instance Tomcatu natvrdo ustřelena:

tomcat-shutdown-01

Analýzou logu jsem zjistil, že potenciálně je problém asi v tom, že jádro Krameria nastartuje nějaký proces/vlákno související se správou procesů (můj odhad, možná to chápu špatně), které se ale při požadavku na celkové zastavení nedaří ukončit a kvůli tomu začne trotlit celý Tomcat.

Zde jsou dva inkriminované a podezřelé řádky z catalina.log:

tomcat-shutdown-02

První řádek indikuje, že to má problém s odregistrací JDBC ovladače, nicméně to nakonec odstřelí interní mechanizmus Tomcatu (asi to neni optimální, ale dejme tomu).

Ale druhý řádek je pak si ten hlavní zdroj problému - to vlákno cz.incad.kramerius.processes.i mpl.GCSchedulerImpl-thread se nepodaří standardně zastavit, začne to trotlit a sypat hromady hlášek do logu, viz výše.

Příklad logu:

tomcat-shutdown-03

Kde by mohl být problém?

Díky, MD

Opravime to soucasne s #1011

@mduda100871 Změna bude problematičtější a vyžádá si víc času. Odebíram z releasu.