SQLDeveloper auf dem MAC

By | 14. Februar 2016

Normalerweise läuft mein MAC ja ohne Probleme und durch den Einbau einer 1TB SSD ist er eigentlich von der Geschwindigkeit her durch Nichts mehr zu toppen.

Dachte ich 🙁

Letzte Woche hatte ich eine neue Version des Oracle SQLDevelopers installiert und das Ding natürlich auch versucht zu starten.
OK, es blinkte im Dock, zeigte also an das es startete, aber danach passierte erst mal nichts mehr.
Trotz dreimal klicken, zeigte es immer nur „ich starte gerade die Applikation“ an.
Da ich keinen Zeitdruck hatte dachte ich mir „OK, suchst Du mal die Tage den Fehler“.

Als ich meinen MAC dann nur mit Batterie beim Kunden angeschaltet hatte, wunderte es mich, daß der Akkuverbrauch enorm hoch war.

Dazu kam dann noch, daß meine Festplatte auf einmal 800GB belegten Speicherplatz einzeigte. WTF ?

Die suche nach dem Akkuverbrauch brachte recht schnell 3 laufende bash-Shells mit jeweils 99% CPU Usage zu Tage.
Nur woher kam das Zeug und warum war meine Platte fast voll ?

Meine erste Vermutung, daß irgendeines von meinen 30 Terminals (ssh sessions) frei drehte, war es leider nicht.
Nach dem Schließen sämtlicher Terminals (Shells) hatte ich immer noch  3 komplett frei drehende bash-shells mit 99% CPU usage 🙁

Die Vermutung lag nahe, dass es der frisch installierte und 3 mal angeklickte SQLDeveloper sein könnte.

Eine APP unter MAC OSX ist schlicht ein Verzeichnis, in dem die ganzen Binaries und Scripte drin liegen. Auf dem MAC wird dann ein Verzeichnis was mit „.app“ endet, als Application angezeigt, auch wenn es eigentlich nur ein Directory ist.

Also ging die Suche erst mal in dem SQLDeveloper.app Verzeichnis nach dem Startscript los.
Im Verzeichnis SQLDeveloper.app/Contents/MacOS wurde recht schnell der Übeltäter erwischt: sqldeveloper.sh

Was macht nun das Startscript ?

Sieht erst mal nicht sooo verdächtig aus, aber es ruft eine neue bash auf.

Und beim Aufruf in der Concolse sagte es auch brav, daß es nun nach /tmp loggen würde.

Also einmal in /tmp nachgeschaut und was finde ich da ?
380GB Logfiles vom SQLDeveloper 🙁
Kein Wunder das meine SSD fast voll war.

Ein Blick in die Logfiles brachte dann etwas wundersames zu Tage.
Da flogen mächtig viele Exceptions, daß die passende JAVA Version nicht gefunden werden konnte

Was war passiert ?
Die suboptimale Umsetzung von Startscript und Programm führte dazu, daß der SQLDeveloper in einer Endlosschleife ging.
Das Startscript startete den, die weiteren Scripte versuchten den SQLDeveloper zu laden, der auch brav loggte „mir fehlt die passende JAVA Version“ und sich beendete, was die Startscripte zum Anlass nahmen, erneut zu versuchen das Teil zu starten.

Klassischer Deadlock in einer Endlosschleife.

Die neueste Version des SQLDevelopers 4.1.3 hat diesen Effekt nicht mehr.

Falls jemand also mal auf CPU-belastende Prozesse in Verbindung mit dem Vollschreiben der Festplatte stößt: sucht unter /tmp und killed die bash-Prozesse.

Kommentar verfassen